【问题标题】: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 黄色和蓝色前景突出显示不同的选择,您都可以在哪里捕捉到“名称”。

    【讨论】:

      猜你喜欢
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多