【问题标题】:How can I build a regex to match a value?如何构建一个正则表达式来匹配一个值?
【发布时间】:2011-08-08 04:00:49
【问题描述】:
我需要一个匹配这种字符串的正则表达式:
brand-new-car
brand-new-car-1
brand-new-car-100
307
我只需要捕捉“名称”,无论字符串是否有-count;像这样:
brand-new-car
brand-new-car
brand-new-car
307
这个正则表达式不能正常工作。它的$1 是完整的字符串,而不是没有-count。
(\S+)(?:-\d+|)$
【问题讨论】:
标签:
javascript
ruby
regex
string
【解决方案1】:
只需删除管道'|',然后它就可以工作了
(\S+)(?:-\d+)$
在这里查看rubular
【解决方案2】:
您需要使第一个捕获组“惰性”或非贪婪。
var re = new RegExp("^(\\S+?)(?:-\\d+)?$");
var testStrings = [
"brand-new-car",
"brand-new-car-1",
"brand-new-car-100",
"307"
];
for (var i=0; i<testStrings.length; i++) {
var result = re.exec(testStrings[i]);
say("result: " + result);
}
结果:
result: brand-new-car,brand-new-car
result: brand-new-car-1,brand-new-car
result: brand-new-car-100,brand-new-car
result: 307,307
【解决方案3】:
试试这个 (?xms)(^[\w-]+.*?)(?=[\w-]+|\Z)
下面是正则表达式好友的图片
无论字符串是否有 -count 黄色和蓝色前景突出显示不同的选择,您都可以在哪里捕捉到“名称”。