我有一个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
我不想要。
任何大师都可以看看上面的正则表达式,并指出出现了什么问题吗?
谢谢,
库伦
答案 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]