如何在javascript中有效地匹配字符串中间的数字?
我有像如何在javascript中有效地匹配字符串中间的数字?,javascript,regex,Javascript,Regex,我有像 XXX-1234 XXXX-1234 XX - 4321 ABCDE - 4321 AB -5677 所以开头会有字母。然后会有连字符。然后是4位数。字母数可能不同,但数字数相同=4 现在我需要匹配数字的前两个位置。所以我尝试了一个漫长的过程 temp_digit=mystring; temp_digit=temp_digit.replace(/ /g,''); temp_digit=temp_digit.split("-"); if(temp_digit[1].substring(0
XXX-1234
XXXX-1234
XX - 4321
ABCDE - 4321
AB -5677
所以开头会有字母。然后会有连字符。然后是4位数。字母数可能不同,但数字数相同=4
现在我需要匹配数字的前两个位置。所以我尝试了一个漫长的过程
temp_digit=mystring;
temp_digit=temp_digit.replace(/ /g,'');
temp_digit=temp_digit.split("-");
if(temp_digit[1].substring(0,2)=='12') {}
现在是否有任何使用正则表达式/模式匹配的过程,以便我能够以有效的方式进行匹配。有点像我在正则表达式模式中很笨。如何从上述字符串的4位中找到前两位?另外,如果解决方案可以匹配不带连字符的数字(如
XXX 1234
),那就太好了,但这是可选的。尝试一个正则表达式,该表达式至少可以找到一个字母[a-zA-Z]+
,必要时后跟一些空格\s*
,然后是连字符-
,如有必要,请在后面加上一些空格\s*
。然后,它匹配模式后的前两个数字\d{2}
:
[a-zA-Z]+\s*-\s*(\d{2})
尝试一个正则表达式,该表达式至少查找一个字母
[a-zA-Z]+
,如果需要,后跟一些空格\s*
,然后是连字符-
,如果需要,再后跟一些空格\s*
。然后,它匹配模式后的前两个数字\d{2}
:
[a-zA-Z]+\s*-\s*(\d{2})
可能会有所不同,但位数相同=4现在我需要匹配数字的前两个位置 如果该解决方案可以匹配没有连字符的数字,如
XXX 1234
,那也太好了,但这是可选的
你真的需要检查它是否以字母开头吗?如何匹配任何4位数字,只捕获前2位数字
Regex
/\b(\d{2})\d{2}\b/
匹配项:
a\b
2位数字,并分配给(\d{2})
匹配[1]
2位以上(未捕获)\d{2}
a\b
var regex=/\b(\d{2})\d{2}\b/;
var str='ABCDE 4321';
var结果=str.match(regex)[1];
document.body.innerText+=结果代码>
可能会有所不同,但位数相同=4
现在我需要匹配数字的前两个位置
如果该解决方案可以匹配没有连字符的数字,如XXX 1234
,那也太好了,但这是可选的
你真的需要检查它是否以字母开头吗?如何匹配任何4位数字,只捕获前2位数字
Regex
/\b(\d{2})\d{2}\b/
匹配项:
\b
a
(\d{2})
2位数字,并分配给匹配[1]
\d{2}
2位以上(未捕获)
\b
a
代码
var regex=/\b(\d{2})\d{2}\b/;
var str='ABCDE 4321';
var结果=str.match(regex)[1];
document.body.innerText+=结果代码>如果结尾总是有4位数字,您可以简单地将其切片:
str.trim().slice(-4,-2);
下面是一个带有示例字符串的JSFIDLE:
如果结尾总是有4位数字,您可以简单地将其切片:
str.trim().slice(-4,-2);
下面是一个带有示例字符串的JSFIDLE:
这不是一个好主意,因为任何愚蠢的用户都可能在最后错误地进入空格。我想避免使用准确的定位号。这不是一个好主意,因为任何愚蠢的用户都可能在最后错误地进入一个空格。我想避开准确的定位号。太好了。谢谢你的回答。它起作用了。马里亚诺的回答也符合我的可选标准。非常好。谢谢你的回答。它起作用了。马里亚诺的回答也符合我的可选标准。太棒了。非常感谢你。多谢各位