在Javascript中,我希望能够匹配以某个短语开头的字符串.但是,我希望它能够匹配短语中任何单词的开头,而不仅仅是短语的开头.
例如:
短语:"这是最好的"
需要匹配:"th"
结果:匹配Th和th
编辑:\ b工作得很好,但它提出了另一个问题:
在外国人之后它也会匹配字符.例如,如果我的字符串是"Männ",并且我搜索"n",它将匹配M之后的n ...任何想法?
Pet*_*tai 23
"This is the best moth".match(/\bth/gi);
Run Code Online (Sandbox Code Playgroud)
或者使用字符串的变量
var string = "This is the best moth";
alert(string.match(/\bth/gi));
Run Code Online (Sandbox Code Playgroud)
\b
在正则表达式中是单词边界,因此\bth
只匹配th
单词开头的单词边界.
gi
用于全局匹配(查找所有实例)和不区分大小写
(我扔到moth
那里作为提醒,检查它是不匹配的)
编辑:
所以,上面只返回你匹配的部分(th
).如果要返回整个单词,则必须匹配整个单词.
这是事情变得棘手的地方.首先没有HTML实体字母:
string.match(/\bth[^\b]*?\b/gi);
Run Code Online (Sandbox Code Playgroud)
要匹配整个单词,请从单词边界\b
抓取th
后跟非单词边界,[^\b]
直到到达另一个单词边界\b
.在*
你想寻找0个或多个先前(非字边界)的手段?
标志意味着这是一个懒惰的比赛.换句话说,它不会扩大到尽可能大,但在第一次机会时停止.
如果你有像ä(ä
)这样的HTML实体字符,那么事情变得非常复杂,你必须使用空格或空格以及一组可能在字边界处定义的字符.
string.match(/\sth[^\s]*|^th[^\s]*/gi);
Run Code Online (Sandbox Code Playgroud)
由于我们没有使用单词边界,我们必须单独处理字符串的开头(|^
).
以上将捕获单词开头的空白区域.使用\b
不会捕获空白,因为\b
没有宽度.
归档时间: |
|
查看次数: |
37474 次 |
最近记录: |