我有一个字符串“这是一个测试,含义ID:1状态:活动lorem ipsum lorem ipsum”。我想检索两个字符串“含义ID:”和“状态:”之间的“ 1”。两个字符串之间的内容将更改,但是两个字符串本身是静态的。我不想替换内容,而只是想将其检索到一个变量中。
我尝试使用:
var meaningPattern = /Meaning ID: /g;
var statusPattern = /Status: /g;
并将其应用于原始字符串并尝试获取子字符串,但它仅与模式匹配,并且不返回任何子字符串。
var contentIWant = originalString.substring(meaningPattern, statusPattern);
答案 0 :(得分:2)
您可以为Meaning ID: (number)
做一个简单的RegEx匹配,其中(number)
是一个捕获组。
var str = "this is a test Meaning ID: 17 Status: Active lorem ipsum lorem ipsum";
var rgx = /Meaning ID: ([0-9]*)/g;
var matches = rgx.exec(str);
var meaningId = +(matches[1]); //Convert to int
console.log(meaningId);
RegEx使您可以根据需要获得更多的创造力,但是鉴于字符串的具体程度,我不确定您是否需要它。
答案 1 :(得分:1)
尽管您的问题表明您缺乏尝试阅读正则表达式工作原理的信息,但事实却如此:
您要查找的正则表达式是
/Meaning ID:\s*(.*)\s+Status/
-这是很通用的,我认为根据捕获的值的细节,您可以使其变得更好,更高效。
尝试并阅读正则表达式,然后在https://regex101.com/等网站上玩耍
答案 2 :(得分:0)
这将返回介于'ID:'和'Status'之间的字符串。
var str = 'this is a test Meaning ID: 1 Status: Active lorem ipsum lorem ipsum'
var mtc = str.match(/Meaning ID:(.*)Status/)
console.log(mtc[1])