我有像
这样的字符串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
但这是可选的。
答案 0 :(得分:3)
尝试使用至少找到一个字母[a-zA-Z]+
的正则表达式,然后在必要时使用一些空格\s*
,后跟一个连字符-
,如果有必要,再加上一些空格{{ 1}}。然后它匹配模式之后的前两个数字\s*
。:
\d{2}
答案 1 :(得分:1)
可能会有所不同,但数字相同= 4
现在我需要匹配数字中的前两个位置。同样很好的解决方案可以匹配没有连字符的数字,例如
XXX 1234
但这是可选的。
你真的需要用字母开头检查吗?如何匹配任何4位数字,只捕获前2位数?
<强>正则表达式强>
/\b(\d{2})\d{2}\b/
匹配
\b
一个word boundary (\d{2})
2位数,captured in group 1,并分配给match[1]
。\d{2}
另外2位数字(未捕获)。\b
一个word boundary <强>代码强>
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/