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