如何在javascript中有效地匹配字符串中间的数字?

时间:2015-11-11 06:21:15

标签: javascript regex

我有像

这样的字符串
XXX-1234
XXXX-1234
XX - 4321
ABCDE - 4321
AB -5677

所以一开始会有信件。然后会有连字符。然后是4位数。字母数可能不同,但数字相同= 4

现在我需要匹配数字中的前2个位置。所以我尝试了很长的过程。

temp_digit=mystring;
temp_digit=temp_digit.replace(/ /g,'');
temp_digit=temp_digit.split("-");
if(temp_digit[1].substring(0,2)=='12') {}

现在有任何进程使用正则表达式/模式匹配,以便我可以有效地完成它。像string.match(regexp)之类的东西我在正则表达式模式中是愚蠢的。如何从上面的字符串中找到4位数的前两位数字?此外,它可以很好地解决方案可以匹配没有连字符的数字,如XXX 1234但这是可选的。

3 个答案:

答案 0 :(得分:3)

尝试使用至少找到一个字母[a-zA-Z]+的正则表达式,然后在必要时使用一些空格\s*,后跟一个连字符-,如果有必要,再加上一些空格{{ 1}}。然后它匹配模式之后的前两个数字\s*。:

\d{2}

答案 1 :(得分:1)

  

可能会有所不同,但数字相同= 4
  现在我需要匹配数字中的前两个位置。

     
    

同样很好的解决方案可以匹配没有连字符的数字,例如XXX 1234但这是可选的。

  

你真的需要用字母开头检查吗?如何匹配任何4位数字,只捕获前2位数?

<强>正则表达式

/\b(\d{2})\d{2}\b/

匹配

<强>代码

var regex = /\b(\d{2})\d{2}\b/;
var str = 'ABCDE 4321';
 
var result = str.match(regex)[1];

document.body.innerText += result;

答案 2 :(得分:0)

如果最后总共有4位数字,您只需将其分割:

str.trim().slice(-4,-2);

这是一个带示例字符串的jsfiddle: https://jsfiddle.net/mckinleymedia/6suffmmm/