繁体   English   中英

正则表达式:获取特定子字符串前后的数字

[英]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.

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