我有以下字符串:
"bar foo test-line drop-line"
我需要替换以任何内容开头并以“-line”结尾的单词。
基本上有:
"bar foo new_word new_word"
我试过了:
string.replace(/\.-line$/g,'new_word')
但它不起作用。
我有以下字符串:
"bar foo test-line drop-line"
我需要替换以任何内容开头并以“-line”结尾的单词。
基本上有:
"bar foo new_word new_word"
我试过了:
string.replace(/\.-line$/g,'new_word')
但它不起作用。
试试这个作为正则表达式:
/\S+-line(?![-\w])/
单词 anchor 在这里不合适,因为破折号不被认为是单词的一部分,所以/\S+-line\b/
会错误地匹配text-with-line-not-to-be-replaced
。因此,前瞻构造。
当然,根据您的用例,\S
可能看起来有点粗糙。如果您的单词真的只包含字母然后破折号等,那么您可以使用以下normal* (special normal*)*
模式:
/[a-z]+(-[a-z]+)*-line(?![-\w])/i
(正常:[a-z]
,特殊-
:)
(编辑:更改了前瞻结构,感谢@thg435)
在您的正则表达式中,您可以使用 \b 来检测新单词的开头,并使用 \w 来检测“单词字符”:
"your string".replace(/\b\w+-line\b/g,'new_word')
怎么样
string.replace(/\b\S+-line\b/g,'new_word')
\b
字边界
\S
非空格
正如 fge 敏锐地指出的那样,我们需要一个\b
afterline
所以我们不会捕捉到结尾lines
liner
等等等等