【问题标题】:regex find all words that contain at least one asterisk正则表达式查找包含至少一个星号的所有单词
【发布时间】:2018-03-01 16:12:34
【问题描述】:

匹配在该单词的任何位置至少包含一个星号的所有单词的正则表达式模式。

str = "t*e *pp locall* so my q**st*on is **stinct *ro* t*eir's. *ev***heles* lol ****"

应该匹配

t*e*pplocall* 所以我的q**st*on**stinct*ro*t*eir's*ev***heles*哈哈****

【问题讨论】:

    标签: javascript regex


    【解决方案1】:
    [\w-']*(?:\*+[\w-']*)+
    
    • [\w-']* 匹配任意单词字符,-' 任意次数
    • (?:\*+[\w-']*)+ 匹配以下一次或多次
      • \*+匹配*一次或多次
      • [\w-']* 匹配任意单词字符,-' 任意次数

    let s = `t*e *pp locall* so my q**st*on is **stinct *ro* t*eir's. *ev***heles* lol ****`
    let r = /[\w-']*(?:\*+[\w-']*)+/g
    
    while(m = r.exec(s)) {
      console.log(m[0])
    }

    【讨论】:

    • 令人印象深刻的正则表达式
    【解决方案2】:

    也许你正在寻找这个?

    /[^\s\.,?!]*\*+[^\s\.,?!]*/g
    
    • [^\s\.,?!]* 匹配任何非空格或标点符号零次或多次。
    • \*+ 匹配* 一次或多次。
    • [^\s\.,?!]* 继续匹配字符,直到遇到空格或标点符号,然后终止匹配。

    我添加了更多标点符号,因为您似乎想从匹配项中省略它:

    var str = "t*e *pp locall* so my q**st*on is **stinct *ro* t*eir's. *ev***heles* lol ****"
    console.log(str.match(/[^\s\.,?!]*\*[^\s\.,?!]*/g))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-07
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 2017-07-21
      相关资源
      最近更新 更多