我在JavaScript中有一个很长的字符串像正则表达式字符串匹配?
var string = 'abc234832748374asdf7943278934haskhjd';
我想匹配像
abc234832748374
- 那就是 - 我试图像
string.match(\abc[^abc]|\def[^def]|)
但是,这并不让我两个字符串因为我需要数字吗?
基本上我需要abc
+ 8个字符和def
之后的8-11个字符?我怎样才能做到这一点 ?
我在JavaScript中有一个很长的字符串像正则表达式字符串匹配?
var string = 'abc234832748374asdf7943278934haskhjd';
我想匹配像
abc234832748374
- 那就是 - 我试图像
string.match(\abc[^abc]|\def[^def]|)
但是,这并不让我两个字符串因为我需要数字吗?
基本上我需要abc
+ 8个字符和def
之后的8-11个字符?我怎样才能做到这一点 ?
如果你想要的文字串,然后8-11位abc
或def
,你需要的东西,如:
(abc|def)[0-9]{8,11}
你可以在这里进行测试:http://www.regular-expressions.info/javascriptexample.html
注意的是,如果你不想匹配更超过11双控释片,你需要在字符串的结尾锚(或[^0-9]
)。如果它只是8个或更多,你可以用{8}
取代{8,11}
。
可以为后面8位数字的字符串匹配abc
abc[0-9]{8}
。
如果前三个字符是任意的,之后8-11个数字,尝试[a-z]{3}[0-9]{8,11}
使用下面的正则表达式来获得精确匹配,
string.match(/(abc|def)\d{8,11}/g);
相克
"g"
全球
"i"
为IGNORECASE
"m"
用于多
要结束阐述在已经发布的答案,你需要一个全球性的比赛,具体如下:
var matches = string.match(/(abc|def)\d{8,11}/g);
这将匹配字符串的所有子集,其中:
“g”标志(全局)为您提供所有匹配的列表,而不仅仅是第一个匹配。
在你的问题,你问8-11 字符,而不是数字。如果它们是数字或其他字符无关紧要,则可以使用“。”。而不是“\ d”。
我还注意到,您的每个示例匹配在“abc”或“def”之后都有11个以上的字符。如果任意数量的数字会做,那么下面的正则表达式的可能更适合:
var matches = string.match(/(abc|def)\d*/g);
var matches = string.match(/(abc|def)\d+/g);
var matches = string.match(/(abc|def)\d{8,}/g);
+1需要时间写一个解释! –