正则表达式单词边界



我正在尝试编写一个正则表达式以将字符串与字符串中所有单词的开头相匹配。

当用户键入一个字符(或字符串)时,它将用于通过名称或邮政编码(在城市和邮政编码连接字符串中)查找城市。

问题是它也匹配城市的结束(这是不需要的......我正在使用以下正则表达式:

patt = new RegExp('\b' + searchchar, 'i')

例如:

  • 测试字符串 : "圣尼古拉斯 (9100)"
  • 字符键入:"s"
    =>不需要的匹配 Sint-niklaas (9100) <== 问题 :-)
    => 通缉火柴 S国际尼克拉斯 (9100)

  • 字符输入:"9"
    => 想要的比赛 圣尼古拉斯 (9100) <== 确定

我想你正在寻找:

patt = new RegExp('^(?:[^(]+\()?' + searchchar, 'mi');

^ 是字符串行开头的锚点(带有 m 修饰符)。输入字母时,由于括号内只有数字,因此可选的非捕获组将失败,并且字母只能位于开头。输入数字时,可选组成功。

最新更新