2

我尝试使用正则表达式替换方法来替换xxx="yyy"给定字符串中的文本模式,例如。

我的模式是:/^[a-zA-Z0-9.;:|_-]+="[a-zA-Z0-9.;:_-]+\"/

代码:

var userinput = '<div id="c16430" style="color:red;" class="css-btn">';         
var pattern = /^[a-zA-Z0-9.;:|_-]+="[a-zA-Z0-9.;:_-]+\"/;
userinput = userinput.replace( pattern, "Replaced..." );

但它不工作...... jsfiddle。怎么了?

提前致谢..

4

3 回答 3

5

你有几个问题:

  1. 您正在尝试匹配输入的开头,^在开头使用
  2. /g最后没有使用全局标志,因此它只会替换第一个匹配项。

这将起作用:

var pattern = /[a-zA-Z0-9.;:|_-]+="[a-zA-Z0-9.;:_-]+\"/g;

这是您更新的示例

于 2013-10-10T13:33:11.483 回答
2

为您简化。如前所述,这可能匹配错误输入,不知道您的输入有多严格。

var pattern = /[^ =]+="[^"]+"/g;

或忽略非单词字符

var pattern = /[^\W]+="[^"]+"/g;

还是坚持原来的想法,i修饰符用于执行不区分大小写的匹配。

var pattern = /[a-z0-9_.|:;-]+="[^"]+"/ig;
于 2013-10-10T13:36:12.137 回答
0

这十分完美

/\s[^=]+\=\".*?\"/g
于 2016-05-16T13:42:14.490 回答