关于正则表达式,或|的疑问

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
</body>

</html>
<script>

//字符类 : 一组相似的元素   [] 中括号的整体代表一个字符

var str = 'abdc';

var re = /a[bde]c/;//bde这几个单词本来就是表达的“或”的关系,我写成re = /a[b|d|e]c/为什么反而弹出false?按照我写的那是变成什么意思了?

alert( re.test(str) );
</script>

阅读 2.5k
4 个回答
var reg1 = /a[bde]c/;   // 匹配 "abc" "adc" "aec";
var reg2 = /a[b|d|e]c/;   // 匹配 "abc" "adc" "aec" "a|c";
// 以上两个正则,但凡包含后面所匹配的字符串,都可以通过验证。
// 原本 "|" 字符 在正则表达式中表示“或”运算,如需匹配该字符,则要进行转义 即"\|";
// 但在 "[]" 中,可能比较特殊吧,因为它内部已经不再需要"|"运算符了,所以即使不进行转义,它也表达了它自身原本的字符含义。

正则表达式 (Regular Expression)
概念: 记录文本规则的一串代码;在js中:

预定义类:
    .    [^\n\r]     除了换行和回车之外的任意字符
    \d   [0-9]       数字字符
    \D   [^0-9]      非数字字符
    \w   [a-zA-Z0-9]     单词字符(在js中,不包含汉字)
    \W   [^a-zA-Z0-9]    非单词字符
    \s   [\f\r\n\t\v]    不可见字符
    \S   [^\f\r\n\t\v]   非不可见字符(即可见字符)
基础语法:
    {}   里面的数字 表示前面内容出现的次数,{n}次,{n,}n到多次,{n,m}n到m次;
    +    表示前面的内容有 1 个或多个
    *    表示前面的内容有 0 个或多个
    ?    表示前面的内容有 0 个或 1 个    3?也可以写作:(3|)
    []   表示一个字符的位置
    ()   用来分组 可以提高优先级
    |    或运算符
    /^内容/    严格限制开头
    /内容$/    严格限制结尾
    /^内容&/   严格限制内容,不仅仅是开头和结尾!

用或要么是[bcd ]要么是(b|c|d)

本来就该是false啊,你测试的str是abdc啊,无论你re写成那个形式,测试都是false的,你是不是以为你测试的str是abcd

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题