为什么这个正则表达式没有提升我的模式? (适用于闪存)

时间:2011-07-17 00:32:21

标签: javascript regex

以下是我的示例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 />

2 个答案:

答案 0 :(得分:2)

编辑: 对不起,我的原因不正确。

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

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

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

以便\s正确出来。

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

在此处看到:jsfiddle(旧的,使用/ /指定)

但是用正则表达式解析html是不受欢迎的,你可能最好抓住这个元素所在的文本节点并改为解析(删除换行符并测试密码=。+?)

答案 1 :(得分:1)

使用带有字符串的RegExp构造函数,因此反斜杠是字符串转义符。请改用regexp文字,就像在另一个答案中一样。 :)