JavaScript:string.match正则表达式帮助
我有一个javascript函数,它用特定的模式查看元素id。因此,我有以下脚本: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
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的答案,以了解关于发生了什么的良好解释。