[英]Regex: get number after and before specific substring
我是 regex 的新手,并试图在子字符串text
和第一个非数字值之前获取数字。 我有:
const str = 'fasdfsdanvczx fdasvczx text 321,fasdgasdf'; str.toLowerCase().match(new RegExp('text (.*)[^0-9]'));
结果我收到: ["text 321,fasdgasdf", "321,fasdgasd"]
但我只想要321
。
在此先感谢您的帮助。
您只能匹配第一个捕获组中的数字,并使用单词边界\\b
来防止text
和数字成为较大单词的一部分。
注意在使用 RegExp 构造函数时对反斜杠进行双重转义。
\btext (\d+)\b
const str = 'fasdfsdanvczx fdasvczx text 321,fasdgasdf'; let res = str.toLowerCase().match(new RegExp('\\\\btext (\\\\d+)\\\\b')); console.log(res[1]);
使用后视查找“文本”后的数字:
(?<=text )\d+
或者简单地匹配零件并选择第二组:
(text )(\d+)
您可以尝试拆分两次:
var str = 'fasdfsdanvczx fdasvczx text 321,fasdgasdf'; var num = str.split(/text /)[1].split(/\\D/)[0]; console.log(num);
第一个 spiit 给我们留下了321,fasdgasdf
,第二个 split 丢弃了从逗号开始的所有内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.