正则表达式查找包含至少一个星号的所有单词

时间:2018-03-01 16:12:34

标签: javascript regex

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

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

应匹配

t*e *pp locall*因此我的q**st*on**stinct *ro* t*eir's*ev***heles* lol ****

2 个答案:

答案 0 :(得分:4)

[\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])
}




答案 1 :(得分:1)

也许你正在寻找这个?

/[^\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))