我正在开发一个特殊的regex,以匹配javascript regex。
现在我让这个regex起作用了:
/\/(.*)?\/(i|g|m+)?
例如:
'/^foo/'.match(/\/(.*)?\/([i|g|m]+)?/) => ["/^foo/", "^foo", undefined]
'/^foo/i'.match(/\/(.*)?\/([i|g|m]+)?/) => ["/^foo/i", "^foo", "i"]现在我需要让这个regex使用:
'^foo'.match(/\/(.*)?\/([i|g|m]+)?/) => ["^foo", "^foo", undefined]不幸的是,我以前的正则表达式不适用于那个正则表达式。
有人能帮我找到匹配这个例子的正则表达式吗(还有其他人):
'^foo'.match([a regex]) => ["^foo", "^foo", undefined]发布于 2013-07-24 20:01:43
匹配正则表达式的正则表达式是
/\/((?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+)\/((?:g(?:im?|mi?)?|i(?:gm?|mg?)?|m(?:gi?|ig?)?)?)/把它拆散,
\/匹配文字/(?![*+?])是必要的,因为/*启动注释,而不是正则表达式。[^\r\n\[/\\]匹配任何非转义序列字符和字符组的非起始字符。\[...\]匹配可以包含未转义的/的字符组.\\.匹配转义序列的前缀。+是必要的,因为//是行注释,而不是正则表达式。(?:g...)?匹配任何非重复正则表达式标志的组合。太丑了。这并不试图将括号对起来,也不检查重复修饰符是否适用于自己,而是筛选出正则表达式无法进行语法检查的大多数其他方式。
如果你需要一个和身体匹配的,就把其他的都去掉:
/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+/或者,在输入的开头和结尾添加"/"。
https://stackoverflow.com/questions/17843691
复制相似问题