为什么这个正则表达式不能识别我的模式?(适用于flash)

Why isnt this regex picking up my pattern? (works on flash)

本文关键字:适用于 flash 模式 我的 正则表达式 不能 识别 为什么      更新时间:2023-09-26

下面是我的例子http://jsfiddle.net/mwDCV/1/

使用http://gskinner.com/RegExr/我得到我想要的,但在javascript我不

模式
pass(word)?'='s*('<[^>]+'>)*'s*([^<]+)
aka
var myRe = new RegExp('pass(word)?'='s*('<[^>]+'>)*'s*([^<]+)', 'gim');

文本
<br />
Run
password=
<br />
test
<br />

编辑:对不起,我把原因记错了。

真正的原因是在javascript中你需要转义斜杠,像这样:

:var myRe = new RegExp('pass(word)?'='s*('<[^>]+'>)*'s*([^<]+)', 'gim');

:var myRe = new RegExp('pass(word)?=''s*(<[^>]+>)*''s*([^<]+)', 'gim');

以使's正常排出

您可以执行console.log(myRe)并查看浏览器如何解析您的表达式(缺少')。

jsfiddle (old,使用/ /指定)

但是用regex解析html是不受欢迎的,您最好抓住该元素所在位置的文本节点并解析它(去掉换行符并测试password=.+?)

您使用RegExp构造函数,它接受一个字符串,因此您的反斜杠是字符串转义。请使用regexp字面值,就像另一个答案一样。:)