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

时间:2009-10-26 16:59:33

标签: 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

我不想要。

任何大师都可以看看上面的正则表达式,并指出出现了什么问题吗?

谢谢,

库伦

3 个答案:

答案 0 :(得分:2)

尝试使用^将正则表达式锚定在开头,最后使用$,将数字匹配分组并允许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 :(得分:2)

或正在说:

DataList\[-\d{3} OR \d{3}\]\.MemberId/

此正则表达式匹配正确:

DataList\[-?\d{1,3}\]\.MemberId

答案 2 :(得分:1)

我的建议

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

{}确定你想要支持的#s数量,以便1-3匹配到[999]