在JavaScript中有一个字符串:
const str = "bugfix/SOME-9234-add-company"; // output should be SOME-9234
const str2 = "SOME/SOME-933234-add-company"; // output should be SOME-933234
const str3 = "test/SOME-5559234-add-company"; // output should be SOME-5559234
我想提取SOME-..
直到第一个-
字符。
我使用了这个正则表达式,但没有工作。什么是正确的正则表达式?
const s = "bugfix/SOME-9234-add-company";
const r1 = s.match(/SOME-([1-9])/);
const r2 = s.match(/SOME-(.*)/);
const r3 = s.match(/SOME-(.*)-$/);
console.log({ r1, r2, r3 });
5条答案
按热度按时间4bbkushb1#
kognpnkq2#
您可以使用
/(SOME-[\d]+)/g
正则表达式,* 例如 *tktrz96b3#
/(SOME-[^-]+)/
应该工作得很好。(捕获SOME-
后不是连字符的所有内容)或者,如果你知道你只有数字,接近你所尝试的:
/(SOME-[1-9]+)/
您缺少一个
+
,无法使用多个字符。我还修改了括号,以准确地捕捉您在问题中显示的内容(即,包括带有
SOME
的部分)z31licg04#
如果你不想使用正则表达式,那么这很简单
czfnxgou5#
在你尝试的模式中:
$
声明字符串的结尾,[1-9]
匹配不带0的单个数字1-9.*
将匹配任何没有换行符的字符0+次不需要捕获组,您可以匹配:
参见regex demo
请注意,match将返回一个数组,您可以从中获取索引0。