[英]Javascript RegEx to match words without preceding or trailing hyphens
我需要一个 Javascript 的正则表达式,它将匹配第 1-4 行中的字符串“smith”,但不匹配下面的第 5-8 行。
编号的行是 Access 数据库中的字段(字段不包含数字)。
到目前为止,我所拥有的是:
var xy = 'smith';
MyString = new RegExp('(^|\\W)' + xy + '(\\W|$)', 'i');
这与第 1-4 行中的 Smiths 匹配,也与第 7 行和第 8 行中的 Smiths 匹配。
我怎样才能让表达式也忽略前面或后面有连字符的 Smiths?
经过一周和几十次尝试,我在问专家
自己写否定字符 class ( \W
) 并包括连字符:
MyString = new RegExp('(^|[^a-z0-9_-])' + xy + '([^a-z0-9_-]|$)', 'i');
\W
匹配任何非单词字符(除了字母、数字和下划线之外的所有字符),而[^a-z0-9_-]
匹配任何既不是单词字符也不是连字符的字符。
您当然可以在该字符 class 中使用\w
:
MyString = new RegExp('(^|[^\\w-])' + xy + '([^\\w-]|$)', 'i');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.