首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配正则表达式的Javascript正则表达式

匹配正则表达式的Javascript正则表达式
EN

Stack Overflow用户
提问于 2013-07-24 19:57:05
回答 1查看 7.4K关注 0票数 14

我正在开发一个特殊的regex,以匹配javascript regex。

现在我让这个regex起作用了:

/\/(.*)?\/(i|g|m+)?

例如:

代码语言:javascript
复制
'/^foo/'.match(/\/(.*)?\/([i|g|m]+)?/) => ["/^foo/", "^foo", undefined]
'/^foo/i'.match(/\/(.*)?\/([i|g|m]+)?/) => ["/^foo/i", "^foo", "i"]

现在我需要让这个regex使用:

代码语言:javascript
复制
'^foo'.match(/\/(.*)?\/([i|g|m]+)?/) => ["^foo", "^foo", undefined]

不幸的是,我以前的正则表达式不适用于那个正则表达式。

有人能帮我找到匹配这个例子的正则表达式吗(还有其他人):

代码语言:javascript
复制
'^foo'.match([a regex]) => ["^foo", "^foo", undefined]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-24 20:01:43

匹配正则表达式的正则表达式是

代码语言:javascript
复制
/\/((?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+)\/((?:g(?:im?|mi?)?|i(?:gm?|mg?)?|m(?:gi?|ig?)?)?)/

把它拆散,

  1. \/匹配文字/
  2. (?![*+?])是必要的,因为/*启动注释,而不是正则表达式。
  3. [^\r\n\[/\\]匹配任何非转义序列字符和字符组的非起始字符。
  4. \[...\]匹配可以包含未转义的/的字符组.
  5. \\.匹配转义序列的前缀。
  6. +是必要的,因为//是行注释,而不是正则表达式。
  7. (?:g...)?匹配任何非重复正则表达式标志的组合。太丑了。

这并不试图将括号对起来,也不检查重复修饰符是否适用于自己,而是筛选出正则表达式无法进行语法检查的大多数其他方式。

如果你需要一个和身体匹配的,就把其他的都去掉:

代码语言:javascript
复制
/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+/

或者,在输入的开头和结尾添加"/"

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

https://stackoverflow.com/questions/17843691

复制
相关文章

相似问题

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