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

时间:2016-08-13 18:13:39

标签: javascript regex word-boundary

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

例如,对于句子......
她说 - “那就是全部,双炒。” ...我想要检测下面灰色显示的字符:
- ' ,所有.'双炒/[^A-Za-z'-]/g

如果我使用正则表达式,则不会检测到“松散”连字符和撇号。
{称{1}} - “这将 {全部{1}}两弗莱,

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

您可以在此处测试我的正则表达式:https://regex101.com/r/bR8sV1/2

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

2 个答案:

答案 0 :(得分:3)

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

  1. 不能 的字符。
  2. 的字符可以单独使用。
  3. 适用于您的示例的正则表达式将是:

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

    source

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

答案 1 :(得分:1)

你可以这样写:

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

或紧凑版:

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

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

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

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