繁体   English   中英

如何建立正则表达式以匹配值?

[英]How can I build a regex to match a value?

我需要一个匹配这种字符串的正则表达式:

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+|)$

您需要使第一个捕获组“懒惰”或“非贪婪”。

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

我发现txt2re.com对于创建正则表达式以及了解将来如何创建正则表达式非常有用。 试试看。

试试这个(?xms)(^ [\\ w-] +。*?)(?= [\\ w-] + | \\ Z)下面是正则表达式好友的图像 在此处输入图片说明

无论字符串是否具有-count,都可以在其中捕获“名称”,黄色和蓝色前景突出显示了不同的选择。

只需删除管道“ |”,即可正常工作

(\S+)(?:-\d+)$

在这里检查了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM