JavaScript 单词边界的正则表达式,允许单词内的连字符和撇号

JavaScript regular expression for word boundaries, tolerating in-word hyphens and apostrophes

我正在寻找 JavaScript 的正则表达式,它将识别英语中的单词边界,同时接受出现在单词内部的连字符和撇号,但不包括单独出现或出现在单词开头或结尾的连字符和撇号一句话。

例如,对于句子...
她说 - '就这样,Two-Fry。'
...我希望检测到下面显示为灰色的字符:
</code>说<code>- '那会</code>是<code>全部,Two-Fry .'

如果我使用正则表达式 /[^A-Za-z'-]/g,则不会检测到 "loose" 连字符和撇号。
</code>说<code>-'那就</code>是<code>all,Two-Fry.'

如何更改我的正则表达式,以便它检测两边都没有单词字符的撇号和连字符?

你可以在这里测试我的正则表达式:https://regex101.com/r/bR8sV1/2

注意:我将要处理的文本可能包含其他书写脚本,例如руский和ไทอ,因此简单地包含不属于任何英语单词的所有字符是不可行的。

你可以这样写:

(\s|[!-/]|[:-@]|[\[-`]|[\{-~])*\s(\s|[!-/]|[:-@]|[\[-`]|[\{-~])*

或精简版:

(\s|[!-/:-@\[-`\{-~])*\s(\s|[!-/:-@\[-`\{-~])*

RegExp 需要一个 \s(Space 个字符)并在其前后选择空格和非字母数字字符。

https://regex101.com/r/bR8sV1/4

  • \s 匹配所有空格
  • !-/!/
  • 的每个字符
  • :-@:@
  • 的每个字符
  • \[-``[``
  • 的每个字符
  • \{-~{~
  • 的每个字符

您可以将字界字符组织成两组。

  1. 不能的角色。
  2. 可以独处的角色。

适用于您的示例的正则表达式为:

[\s.,'-]{2,}|[\s.]

Regex101 Demo

现在剩下的就是继续将所有非单词字符添加到这两个组中,直到它满足您的所有需求。因此,您可能会开始向这些字符添加符号和更多标点符号 类.