奇怪的结果与简单的正则表达式

时间:2014-12-18 12:37:15

标签: javascript regex

我现在正在处理正则表达式并遇到一种奇怪的行为:

以下正则表达式接受Q-123456-789q-123456-789

params: '^\\q\\-\\d{6}\\-\\d{3}$|^\\Q\\-\\d{6}\\-\\d{3}$'

以下正则表达式接受R-123456-789但不接受r-123456-789

params: '^\\r\\-\\d{6}\\-\\d{3}$|^\\R\\-\\d{6}\\-\\d{3}$'

(我只是将q替换为r而将Q替换为R

3 个答案:

答案 0 :(得分:1)

由于:

\r匹配回车

\q仅与文字q匹配。

顺便说一下,你的正则表达式使用了过多的转义,它应该没有\\ ,即

"^[qQ]-\\d{6}-\\d{3}$"

OR

"^[rR]-\\d{6}-\\d{3}$"

答案 1 :(得分:0)

\r匹配回车(0x0D - 不可打印的字符),而不是r字符。而\q确实匹配字符q

如果您想匹配rR,只需在字符类中替换它们:^[rR]

答案 2 :(得分:0)

尝试使用[r]进行完全匹配,而不是\r以获得预期结果

试试这个:

^[rR]-\d{6}\-\d{3}$

使用https://regex101.com/#javascript进行测试