我有一个很长的字符串,我想从该字符串中找到 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
来确保您的号码不属于更大的匹配项。如果您不使用捕获组,则可以忽略它们。
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/