【问题标题】:Help with regex in javascript帮助 javascript 中的正则表达式
【发布时间】:2010-09-30 02:44:25
【问题描述】:

我有这个示例文本,它是从 html 元素上的类名中检索到的:

rich-message err-test1 erroractive
rich-message err-test2 erroractive
rich-message erroractive err-test1
err-test2 rich-message erroractive

我正在尝试匹配每个示例中的“test1”/“test2”数据。我目前正在使用以下正则表达式,它匹配“err-test1”类型的单词。我不知道如何将其限制为连字符 (-) 之后的数据。

/err-(\S*)/ig

撞墙头疼。

【问题讨论】:

    标签: javascript regex classname


    【解决方案1】:

    您可以尝试 'err-([^ \n\r]*)' - 但您确定问题出在正则表达式上吗?您是否使用了整个结果,而不仅仅是第一次捕获?

    【讨论】:

    • 我唯一需要的是“err-”之后的文本。我想在单个正则表达式中干净地进行匹配,而不是匹配整个单词然后使用额外的方法剥离“err-”。当然,它现在可以节省时间,但仍然不能解决问题。
    【解决方案2】:

    从我正在阅读的内容来看,您的代码已经可以工作了。

    Regex.exec() 成功时返回结果数组。

    数组中的第一个元素(索引 0)返回整个字符串,之后所有() 封闭的元素都被推入这个数组。

    var string = 'rich-message err-test1 erroractive';
    var regex = new RegExp('err-(\S*)', 'ig');
    var result = regex.exec(string);
    
    alert(result[0]) --> returns err-test1
    alert(result[1]) --> returns test1
    

    【讨论】:

    • 该死的,我是个白痴。我一直在使用 .match() 而不是 .exec()。谢谢!
    【解决方案3】:

    - 后面的东西应该在结果数组中。第一项是所有匹配的文本(例如“err-test1”),下一项是捕获括号中的匹配项(例如“test1”)。

    myregex = /err-(\S*)/ig;
    mymatch = myregex.exec("data with matches in it");
    testnum = mymatch[1];
    

    这是reference site

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 1970-01-01
      • 2011-06-10
      相关资源
      最近更新 更多