gpt4 book ai didi

Javascript RegEx 匹配没有前后连字符的单词

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:04:20 24 4
gpt4 key购买 nike

我需要一个用于 Javascript 的正则表达式,它将匹配第 1-4 行中的字符串“smith”,但不匹配下面第 5-8 行中的字符串。
带编号的行是 Access 数据库中的字段(字段不包含数字)。
到目前为止我所拥有的是:

var xy = 'smith';
MyString = new RegExp('(^|\\W)' + xy + '(\\W|$)', 'i');

这与第 1-4 行中的 Smiths 匹配,但也与第 7 行和第 8 行中的 Smiths 匹配。
我怎样才能让表达式也忽略前面或后面有连字符的 Smiths?

  1. 史密斯、琼斯、威尔逊
  2. 史密斯·琼斯·威尔逊
  3. 琼斯、史密斯(小)、威尔逊
  4. 琼斯、威尔逊、史密斯
  5. 琼斯阿罗史密斯
  6. 史密森威尔逊
  7. 琼斯、史密斯-崔德斯通、威尔逊
  8. 威尔逊、布莱克利-史密斯、琼斯

经过一周和数十次尝试,我正在请教专家!

最佳答案

自己编写否定字符类(\W)并包含连字符:

MyString = new RegExp('(^|[^a-z0-9_-])' + xy + '([^a-z0-9_-]|$)', 'i');

虽然 \W 匹配任何非单词字符(除了字母、数字和下划线之外的所有字符),[^a-z0-9_-] 匹配任何非单词字符既不是这样的单词字符也不是连字符。

您当然可以在该字符类中使用 \w:

MyString = new RegExp('(^|[^\\w-])' + xy + '([^\\w-]|$)', 'i');

关于Javascript RegEx 匹配没有前后连字符的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13114340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com