Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么正则表达式方括号不能与“;或;陈述_Javascript_Regex - Fatal编程技术网

Javascript 为什么正则表达式方括号不能与“;或;陈述

Javascript 为什么正则表达式方括号不能与“;或;陈述,javascript,regex,Javascript,Regex,我正在使用Javascript测试用户是否输入“dev”或“development”这个词 我使用了/^[dev|development]$/.test(用户输入) 目前我正在使用/^dev$| ^development$/.test('developmentt') 但是为什么使用方括号注释会得到错误的结果呢 方括号不是用于单词的正确操作。您需要将它们放在()中,由|分隔 /^(dev|development)$/.test( user_input ); 或 OR函数应用于角色类中存在的每个角

我正在使用Javascript测试用户是否输入“dev”或“development”这个词

我使用了
/^[dev|development]$/.test(用户输入)

目前我正在使用
/^dev$| ^development$/.test('developmentt')

但是为什么使用方括号注释会得到错误的结果呢


方括号不是用于单词的正确操作。您需要将它们放在
()
中,由
|
分隔

/^(dev|development)$/.test( user_input );


OR函数应用于角色类中存在的每个角色。因此,这个
[dev | development]
匹配
d
e
v
d
e
,……

阅读
[]
。它们不是你想要的,也不是你感觉到的。但是,如果你真的想使用方括号,而不想得到误报,那就改用
^[dev|development]+$
(这样你会得到误报)。@Jongware很棒!但是有什么区别?为什么投票被否决了?完全合法的问题..是
+
造成了差异。请仔细阅读基本内容——应该提到最重要的部分。酷!但为什么呢?两者之间有什么区别?一个小的澄清:OR
|
条本身的使用不需要括号。如果有圆括号,OR条在最里面的组上工作(和所有其他正则表达式命令一样),如果没有,则在整个正则表达式上工作。
/^dev(?:elopment)?$/.test( user_input );