正则表达式字符串匹配
Regex string match?
我在javascript中有一个很长的字符串,比如
var string = 'abc234832748374asdf7943278934haskhjd';
我试图匹配喜欢
abc234832748374
- 那是 - 我已经尝试过
string.match('abc[^abc]|'def[^def]|)
但这并不能让我得到两个字符串,因为我需要在它们后面加上数字?
基本上我需要 abc
+ 8 个字符之后,之后def
8-11 个字符?我该怎么做?
如果您希望文本字符串abc
或def
后跟 8-11 位数字,则需要类似以下内容:
(abc|def)[0-9]{8,11}
您可以在此处进行测试:http://www.regular-expressions.info/javascriptexample.html
请注意,如果您不想匹配超过 11 位数字,则需要在字符串末尾使用锚点(或[^0-9]
)。如果只有 8 个或更多,您可以将{8,11}
替换为 {8}
.
要详细说明已发布的答案,您需要全局匹配,如下所示:
var matches = string.match(/(abc|def)'d{8,11}/g);
这将匹配字符串的所有子集,这些子集:
- 以"abc"或"def"开头。 这是"(abc|def)"部分
- 然后后跟 8-11 位数字。 这是"''d{8,11}"部分。 ''d 匹配数字。
"g"标志(全局)为您提供所有匹配项的列表,而不仅仅是第一个匹配项。
在您的问题中,您要求 8-11 个字符而不是数字。 如果它们是数字还是其他字符无关紧要,则可以使用"."而不是"''d"。
我还注意到您的每个示例匹配项在"abc"或"def"后面都有超过 11 个字符。 如果任意数量的数字都可以,那么以下正则表达式可能更适合:
- 任意位数 -
var matches = string.match(/(abc|def)'d*/g);
- 至少一位数字 -
var matches = string.match(/(abc|def)'d+/g);
- 至少 8 位数字 -
var matches = string.match(/(abc|def)'d{8,}/g);
您可以匹配字符串abc[0-9]{8}
abc
后跟 8 位数字。
如果前三个字符是任意的,之后是 8-11 位数字,请尝试[a-z]{3}[0-9]{8,11}
使用以下正则表达式获得完全匹配,
string.match(/(abc|def)'d{8,11}/g);
以 g 结尾
面向全球"g"
"i"
忽略大小写
多行"m"
- RegEx以匹配字符串中的两个或多个名称
- 如何在javascript中使用string.replace.将匹配字符串开头的两个不同表达式替换为null
- Javascript中的搜索栏-部分匹配字符串
- 如果条件推送包含/匹配字符串的值
- 如何匹配字符串中的日期
- 用于循环和匹配字符串的 JavaScript
- JavaScript 中的正则表达式:匹配字符串开头的多个子字符串
- 使用javascript匹配字符串中数组的一个元素
- 正则表达式能否匹配字符串开头或结尾的字符(但不能同时匹配)
- 在谷歌地图API自动完成中显示不匹配字符串的结果
- JavaScript Regexp仅匹配字符串的一部分
- 如何匹配字符串开头的数字
- 我该如何编写一个正则表达式来匹配字符串后面的值(到下一个逗号)
- Javascript:为什么要使用indexOf()来匹配字符串中的值
- 使用正则表达式中的变量与$和^匹配字符串
- 使用数组中的所有字符串匹配字符串
- javascript正则表达式匹配字符串包含阿拉伯特殊字符符号'œ;u0640
- 正则表达式.在满足条件之前,避免匹配字符串
- 正则表达式父项,用于匹配字符串中的维度
- Javascript RegExp - 匹配字符串并替换