无法使用正则表达式提取模式之间的字符串

时间:2019-04-09 09:30:30

标签: javascript regex

我的输入字符串:“ 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);

1 个答案:

答案 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

enter image description here