我的输入字符串:“ CR 1513II2255651 202OL19010200785 FX:1 NEAT LIMITE mndfgusadg202OL19010200785 NEAT LIMITED NEAT LIMITED港币52194.2”
我要提取介于 FX:1 和第一个字母数字单词之间的所有内容,在这种情况下,预期输出为: NEAT LIMITE < / p>
我尝试了下面的代码,但没有得到想要的解决方案
var str = "CR 1513II2255651 202OL19010200785 FX:1 NEAT LIMITE mndfgusadg202OL19010200785 NEAT LIMITED NEAT LIMITED HKD 52194.2"
var pattern = "FX:1 (.*) ((?=.*[0-9])(?=.*[a-zA-Z]))+"
str.match(pattern);
答案 0 :(得分:2)
您可以使用
var str = "CR 1513II2255651 202OL19010200785 FX:1 NEAT LIMITE mndfgusadg202OL19010200785 NEAT LIMITED NEAT LIMITED HKD 52194.2"
var pattern = /FX:1\s+(.*?)\s+(?:[a-zA-Z]+[0-9]|[0-9]+[a-zA-Z])/;
var result = str.match(pattern);
if (result) {
console.log(result[1]); // Get only Group 1 value
}
模式详细信息
FX:1
-文字字符串\s+
-超过1个空格(.*?)
-组1:尽可能少包含0个字符\s+
-超过1个空格(?:[a-zA-Z]+[0-9]|[0-9]+[a-zA-Z])
-
[a-zA-Z]+[0-9]
-1个以上的字母,然后是一个数字|
-或[0-9]+[a-zA-Z]
-1个以上的数字,然后是字母。请参见Regulex graph: