javascript - javascript中的正则表达式复杂吗?

标签 javascript regex string match

我有一个很长的字符串,我想从该字符串中找到 CAS 编号,该字符串具有如下模式:

2 to 7 digits-2 digits-1 digit

示例:

1154-12-6、127946-96-2

我正在使用以下正则表达式来获取此号码:

str.match(/([0-9]{2,7})-([0-9]{2})-[0-9]/)

但是对于包含“29022-11-5”的示例,它给我的是[“29022-11-5”,“29022”,“11”]。

请让我知道我该怎么做。

console.log(

    "A long string with a number 29022-11-5 somewhere".match(/([0-9]{2,7})-([0-9]{2})-[0-9]/)
)    

// it is giving me ["29022-11-5", "29022", "11"].

最佳答案

您可以使用 /g 标志查找所有匹配项,并使用单词边界 \b 来确保您的号码不属于更大的匹配项。如果您不使用捕获组,则可以忽略它们。

\b[0-9]{2,7}-[0-9]{2}-[0-9]\b

let strings = [
  "29022-11-5",
  "1154-12-6, 127946-96-2"
];

let pattern = /([0-9]{2,7})-([0-9]{2})-[0-9]/g;

strings.forEach((s) => {
  console.log(s.match(pattern));
});

关于javascript - javascript中的正则表达式复杂吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51102863/

相关文章:

javascript - 数据列表垂直滚动在 Chrome 中不起作用

regex - sed 匹配大括号之间的匹配

Java - java.lang.StringIndexOutOfBoundsException : String index out of range: 11

javascript - Chrome 中快速挂 AJAX 删除后

javascript - 如何仅使用单个数组在 JavaScript 中模拟调用堆栈

javascript - jQuery 或 JavaScript ajax get 方法的返回值的大小限制?

给定 DFA 的正则表达式

javascript;正则表达式用数字+字符串的其余部分分割字符串直到下一个数字

Ruby String#scan 相当于返回 MatchData

python - 在python中将二进制文件转换为utf-8