Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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/17.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:string.match正则表达式帮助_Javascript_Regex - Fatal编程技术网

JavaScript:string.match正则表达式帮助

JavaScript:string.match正则表达式帮助,javascript,regex,Javascript,Regex,我有一个javascript函数,它用特定的模式查看元素id。因此,我有以下脚本: if (f.elements[i].id.match(/DataList\[-\d{3}|\d{3}\]\.MemberId/)) { //do something } 它应该将元素与ID相匹配,例如: DataList[-1].MemberId DataList[-2].MemberId 但是,它也符合以下条件: DataList[-1].FirstName DataList[-2].FirstName

我有一个javascript函数,它用特定的模式查看元素id。因此,我有以下脚本:

if (f.elements[i].id.match(/DataList\[-\d{3}|\d{3}\]\.MemberId/)) {
  //do something
}
它应该将元素与ID相匹配,例如:

DataList[-1].MemberId
DataList[-2].MemberId
但是,它也符合以下条件:

DataList[-1].FirstName
DataList[-2].FirstName
这是我不想要的

任何一位大师都可以看看上面的正则表达式并指出哪里出了问题吗?

谢谢


Cullen

尝试在开头用
^
锚定正则表达式,在结尾用
$
锚定正则表达式,将数字匹配分组,允许1-3个数字,而不仅仅是3个

if (f.elements[i].id.match(/^DataList\[(-\d{1,3}|\d{1,3})\]\.MemberId$/)) {
  //do something
}
按照您的方式,它匹配任何包含“DataList[-123”或“123].MemberId”的内容

实现相同功能的更简单的整体正则表达式是:

if (f.elements[i].id.match(/^DataList\[-?\d{1,3}\]\.MemberId$/)) {
  //do something
}

尝试在开始时用
^
锚定正则表达式,在结束时用
$
锚定正则表达式,将数字匹配分组,允许1-3个数字,而不仅仅是3个

if (f.elements[i].id.match(/^DataList\[(-\d{1,3}|\d{1,3})\]\.MemberId$/)) {
  //do something
}
按照您的方式,它匹配任何包含“DataList[-123”或“123].MemberId”的内容

实现相同功能的更简单的整体正则表达式是:

if (f.elements[i].id.match(/^DataList\[-?\d{1,3}\]\.MemberId$/)) {
  //do something
}
医生说:

DataList\[-\d{3} OR \d{3}\]\.MemberId/
此正则表达式正确匹配:

DataList\[-?\d{1,3}\]\.MemberId
医生说:

DataList\[-\d{3} OR \d{3}\]\.MemberId/
此正则表达式正确匹配:

DataList\[-?\d{1,3}\]\.MemberId
我的建议

   if (f.elements[i].id.match(/DataList\[-[0-9]{1,3}\]\.MemberId/)) {
  }
{}决定了您要支持多少个#,因此1-3将匹配upu和[999]

我的建议

   if (f.elements[i].id.match(/DataList\[-[0-9]{1,3}\]\.MemberId/)) {
  }

{}决定了要支持多少个#,因此1-3将匹配upu到[999]

对于要匹配所列元素名的正则表达式,需要将
\d{3}
更改为
\d{1,3}
。请参阅@Macarse的答案,以获得关于发生了什么的良好解释。要使您发布的正则表达式与您列出的元素名称相匹配,您需要将
\d{3}
更改为
\d{1,3}
。请参阅@Macarse的答案,以了解关于发生了什么的良好解释。