Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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

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,我需要检查一些输入是否与此严格相同: 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试图做一个积极的前瞻,尽管没有必要,语法也有点不正确。不知道
^
从哪里来。是的。我试图做一个积极的展望。我从书上读错了。