有一篇混合中英文的文章,我要得到它包含的单词,
我用下面的方法,但显然不是很准,请老司机帮助看一下。多谢
var str="1.tom:'what's your name.' 1.汤姆:“你的名字是什么?”";
str.match(/[a-zA-Z]+/ig);
//执行结果▶["tom", "what", "s", "your", "name"]
现状:已经能过滤掉大部分标点、数字、和中文
问题:what’s
这种词被拆成了2个数组,我不想要类似what’s
和x-ray
这种词。
如何修改正则表达式把它们排除出去?
就是出现what's
时,不要what
也不要s
也不要what's
谢谢老司机领路!^_^
更新
不包含这个需要分两步实现,负向预查做不到,会干掉
wath'
但会保留s
这种结果。我建议你先把带符号的单词一起搜出来之后再来过滤一次,
由于js没有回顾零宽断言,你的需求似乎无法实现,不然可以用
(?<=[^-'a-z]|^)[a-z]+(?=[^-'a-z]|$)
在js里可以加一步处理得到结果
可以用正则多次过滤