Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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中,我做了以下工作: var matched=searched.match(/\d{7}/) 如果搜索的是1234567或XYZ1234567,则效果非常好。两者都返回1234567,这很好123和XYZ123返回空值,这是预期值 但当搜索的为12345678或XYZ12345678时,一个条件失败。我希望两者都返回null,因为我查找的是精确的7位匹配。它们都返回2345678 /\d{7}$/也不起作用 有人能给点建议吗 谢谢(?:\D | ^):以非数字开头 var

在Javascript中,我做了以下工作:

var matched=searched.match(/\d{7}/)

如果
搜索的
1234567
XYZ1234567
,则效果非常好。两者都返回
1234567
,这很好
123和
XYZ123
返回空值,这是预期值

但当搜索的
12345678
XYZ12345678
时,一个条件失败。我希望两者都返回null,因为我查找的是精确的7位匹配。它们都返回
2345678

/\d{7}$/
也不起作用

有人能给点建议吗

谢谢

(?:\D | ^)
:以非数字开头

var matched = searched.match(/(?:\D|^)(\d{7})(?:\D|$)/);
if (matched) { 
  matched = matched[1]; 
}
(?:\D |$)
:以非数字结尾

var matched = searched.match(/(?:\D|^)(\d{7})(?:\D|$)/);
if (matched) { 
  matched = matched[1]; 
}

您可以使用基于lookaround的正则表达式。自2020年6月30日以来,浏览器中的Lookbehind采用正在获得势头

使用


强制字符串的开头和结尾有效吗
/^(\d{7})$/
您需要一个由字符串开头/结尾或非数字限定的7个连续数字的正则表达式。您可以使用\d代替[^\d],这也与
abc1234567
中的
c1234567
匹配。谢谢。我不知道javascript非捕获组的实际行为,您可以将其缩短为
var[,matched]=searched.match(regex)| |[]
,但如果您保持原样,我完全理解。一行有点神秘。
/(?<!\d)\d{7}(?!\d)/g