我在javascript中有一个很长的字符串,比如
var string = 'abc234832748374asdf7943278934haskhjd';
我在试着匹配
abc234832748374
-也就是-我试着像这样
string.match(\abc[^abc]|\def[^def]|)
,但这不能同时得到两个字符串,因为我需要后面跟上数字?
基本上我需要abc
+8个字符之后和def
后的8-11个字符?我该怎么做呢?
发布于 2012-05-31 12:17:09
如果您希望文字字符串abc
或def
后跟8-11个数字,则需要类似以下内容:
(abc|def)[0-9]{8,11}
你可以在这里测试它:http://www.regular-expressions.info/javascriptexample.html
请注意,如果不想匹配超过11位的数字,则需要在字符串的末尾添加一个锚点(或[^0-9]
)。如果只有8或更多,你可以用{8}
替换{8,11}
。
发布于 2012-05-31 12:36:50
要详细说明已发布的答案,您需要一个全局匹配,如下所示:
var matches = string.match(/(abc|def)\d{8,11}/g);
这将匹配字符串的所有子集,这些子集包括:
"g“标志(全局)为您提供了所有匹配的列表,而不仅仅是第一个匹配。
在您的问题中,您要求输入8-11个字符的,而不是数字。如果它们是数字或其他字符并不重要,您可以使用“。而不是"\d“
我还注意到,您的每个示例匹配在"abc“或"def”之后都有超过11个字符。如果可以使用任意数量的数字,则以下正则表达式可能更适合:
至少1位数字-至少8位数字- 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);
-
发布于 2012-05-31 12:16:52
您可以匹配字符串abc
后跟8位数字的abc[0-9]{8}
。
如果前三个字符是任意的,并且之后是8-11个数字,请尝试[a-z]{3}[0-9]{8,11}
https://stackoverflow.com/questions/10827344
复制相似问题