"This is the best moth".match(/\bth/gi);
或者为你的字符串添加一个变量
var string = "This is the best moth";
alert(string.match(/\bth/gi));
正则表达式中的\b 是单词边界,因此\bth 只会匹配单词开头的th。
gi 用于全局匹配(查找所有匹配项)且不区分大小写
(我把moth扔进去,以提醒检查它是否不匹配)
jsFiddle example
编辑:
所以,上面只返回你匹配的部分(th)。如果要返回整个单词,则必须匹配整个单词。
这就是事情很快变得棘手的地方。首先没有 HTML 实体字母:
string.match(/\bth[^\b]*?\b/gi);
Example
要匹配整个单词,请从单词边界\b 抓取th,然后是非单词边界[^\b],直到到达另一个单词边界\b。 * 表示您要查找之前的 0 个或多个(非单词边界)? 标记表示这是一个惰性匹配。换句话说,它不会扩展到尽可能大,而是一有机会就停下来。
如果您有像 ä (ä) 这样的 HTML 实体字符,事情会变得非常复杂,您必须使用空格或空格以及一组可能位于单词边界的已定义字符。
string.match(/\sth[^\s]*|^th[^\s]*/gi);
Example with HTML entities.
由于我们没有使用单词边界,我们必须单独处理字符串的开头 (|^)。
上面将捕获单词开头的空白。使用\b 不会捕获空白,因为\b 没有宽度。