Javascript 为什么这个正则表达式赢了';你不能正常工作吗?
我需要检查一些输入是否与此严格相同:Javascript 为什么这个正则表达式赢了';你不能正常工作吗?,javascript,regex,Javascript,Regex,我需要检查一些输入是否与此严格相同: PEOPLE-123456或PEOPLE-12345376(可以是数字的任意组合) -后面的数字数量无关紧要。它可以是0到N个数字 我想出了以下表达式: /(人-)|(人-?=^[0-9]+$/ 问题是,即使-后面的字符不是数字,这也会起作用 PEOPLE-123131产生true PERSON-123242生成true PERSON-23123.341产生true 人-.2341231产生false 我做错了什么?我看不出表达式本身有任何问题,也许我不
PEOPLE-123456
或PEOPLE-12345376
(可以是数字的任意组合)
-
后面的数字数量无关紧要。它可以是0到N个数字
我想出了以下表达式:
/(人-)|(人-?=^[0-9]+$/
问题是,即使-
后面的字符不是数字,这也会起作用
- PEOPLE-123131产生
true
- PERSON-123242生成
true
- PERSON-23123.341产生
true
- 人-.2341231产生
false
我做错了什么?我看不出表达式本身有任何问题,也许我不想看到它。您需要在两个备选方案周围加上分组括号:
/^(PEOPLE|PERSON)-\d+$/
您不应该将其标记为可选的?
。我不知道你为什么把=
和^
放在那部分后面
如果您想在数字中允许小数点,请使用[0-9.]
而不是\d
尝试以下方法:
^(PERSON|PEOPLE)-[0-9]{1,}$
这样可以确保开头的数字正好是威瑟
人
或人
,然后是-
,最后至少有一个数字。如果数字是可选的,这应该可以用。否则,至少需要1个数字将*替换为+
/^(PEOPLE|PERSON)-\d*$/
将其可视化,您将看到您的bug列出的结果与提供的正则表达式不匹配。
[0-9]{1,}
->[0-9]+
->\d+
当然,这一切都是一样的。我发现对于新手来说,[0-9]{1,}
更具可读性,也更容易理解。我认为OP试图做一个积极的前瞻,尽管没有必要,语法也有点不正确。不知道^
从哪里来。是的。我试图做一个积极的展望。我从书上读错了。