正则表达式替换问题

时间:2013-10-10 13:31:10

标签: javascript regex

我尝试使用正则表达式替换方法来替换给定字符串中的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。有什么问题?

提前致谢..

3 个答案:

答案 0 :(得分:5)

你有几个问题:

  1. 您正尝试使用开头的^
  2. 来匹配输入的开头
  3. 您最后没有使用全局标记/g,因此它只会替换第一个匹配项。
  4. 这将有效:

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

    Here is your updated example

答案 1 :(得分:2)

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

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

或忽略非单词字符

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

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

var pattern = /[a-z0-9_.|:;-]+="[^"]+"/ig;

答案 2 :(得分:0)

这是完美的

/\s[^=]+\=\".*?\"/g