如何按单词边界或数字拆分?

问题描述 投票:0回答:1

我有一个使用此正则表达式搜索单词的单词过滤器:

/\b[a-zA-Z-]+\b/

搜索单词:“ hello”。

  • 案例1:“你好” = true
  • 案例2:“ Hello0 there” =假
  • 情况3:“ Hello_there” =否
  • 情况4:“ Hello-there” =假
  • 案例5:“ 4Hello there” = false

我如何设置单词边界以查找以数字,下划线,连字符或字母以外的其他任何字符开头/结尾的单词?

ruby-on-rails regex ruby-on-rails-5
1个回答
0
投票

您可以使用

/(?<![^\W\d])[a-zA-Z]+(?![^\W\d])/

(?<![^\W\d])后面的否定匹配与非单词和数字char以外的字符不紧随其后的位置,即,必须以字符串开头或字符char开头,但必须是数字。

(?![^\W\d])否定前瞻匹配的位置不是紧随其后的是非单词和数字char以外的其他字符,即,必须有字符串的末尾或不是数字的单词char。

© www.soinside.com 2019 - 2024. All rights reserved.