【发布时间】:2013-09-18 04:38:02
【问题描述】:
这个正则表达式是可替换的有什么区别?
((?:[^\"])*)
([^\"]*)
这个问题的背景:
javascript WYSIWYG 编辑器 (tinymce) 无法解析我的 html 代码 在 Firefox(23.0.1 和 25.0a2)中,但在 Chrome 中有效。
我找到了正则表达式的原因:
attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;
我修改,替换
((?:[^\"])*)
与
([^\"]*)
和
((?:[^\'])*)
与
([^\']*)
生成的正则表达式在我的测试用例的两个浏览器中都有效
attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"([^\"]*)\")|(?:\'([^\']*)\')|([^>\s]+)))?/g
有人可以解释一下吗?
我的测试数据仅适用于修改后的正则表达式是一个 >700 kb 的大图像,例如:
var testdata = '<img alt="" src="data:image/jpeg;base64,/9j/4AAQSkZJRgA...5PmDk4FOGOHy6S3JW120W1uCJ5M0PBa54edOFAc8ePX/2Q==">'
做类似的事情来测试:
testdata.match(attrRegExp);
尤其是当测试数据很大时,未经修改的正则表达式可能会在 firefox 中失败。
你可以找到jsfiddle example here:
【问题讨论】:
-
不错的观察。也许是 Firefox/Gecko 错误?
-
@Cybȫʁgϟ37:这对 OP 毫无帮助,因为 TinyMCE 的代码不应归咎于他(我想)
-
@NiklasB。 - 啊,我现在明白了。
-
应该没有区别。你有什么经验吗?
标签: javascript regex