首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正则表达式字符串匹配?

正则表达式字符串匹配?
EN

Stack Overflow用户
提问于 2012-05-31 12:13:01
回答 4查看 87.1K关注 0票数 18

我在javascript中有一个很长的字符串,比如

var string = 'abc234832748374asdf7943278934haskhjd';

我在试着匹配

abc234832748374 -也就是-我试着像这样

string.match(\abc[^abc]|\def[^def]|),但这不能同时得到两个字符串,因为我需要后面跟上数字?

基本上我需要abc +8个字符之后和def后的8-11个字符?我该怎么做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-31 12:17:09

如果您希望文字字符串abcdef后跟8-11个数字,则需要类似以下内容:

代码语言:javascript
运行
复制
(abc|def)[0-9]{8,11}

你可以在这里测试它:http://www.regular-expressions.info/javascriptexample.html

请注意,如果不想匹配超过11位的数字,则需要在字符串的末尾添加一个锚点(或[^0-9])。如果只有8或更多,你可以用{8}替换{8,11}

票数 35
EN

Stack Overflow用户

发布于 2012-05-31 12:36:50

要详细说明已发布的答案,您需要一个全局匹配,如下所示:

代码语言:javascript
运行
复制
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个字符。如果可以使用任意数量的数字,则以下正则表达式可能更适合:

至少1位数字-至少8位数字- var matches = string.match(/(abc|def)\d*/g);

  • At var matches = string.match(/(abc|def)\d+/g);

  • At var matches = string.match(/(abc|def)\d{8,}/g);

-

  • Any number of digits -至少1位数字-至少8位数字
票数 11
EN

Stack Overflow用户

发布于 2012-05-31 12:16:52

您可以匹配字符串abc后跟8位数字的abc[0-9]{8}

如果前三个字符是任意的,并且之后是8-11个数字,请尝试[a-z]{3}[0-9]{8,11}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10827344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档