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

用于单词边界的JavaScript正则表达式,允许在单词中使用连字符和撇号,javascript,regex,word-boundary,Javascript,Regex,Word Boundary,我正在寻找一个JavaScript正则表达式,它可以识别英语中的单词边界,同时接受出现在单词内部的连字符和撇号,但不包括单独出现或出现在单词开头或结尾的字符 例如,对于句子… 她说:“就这些了,两份煎炸食品。” ... 我希望检测下面以灰色显示的字符: 她说-'那将全部,两个 如果我使用正则表达式/[^A-Za-z'-]/g,则不会检测到“松散”连字符和撇号。 她说-' 我如何修改我的正则表达式,以便它检测两侧都没有单词字符的撇号和连字符 您可以在此处测试我的正则表达式: 注意:我将要处理的文本

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

例如,对于句子…
她说:“就这些了,两份煎炸食品。” ... 我希望检测下面以灰色显示的字符:
-'
那将
全部
两个

如果我使用正则表达式
/[^A-Za-z'-]/g
,则不会检测到“松散”连字符和撇号。
-
'

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

您可以在此处测试我的正则表达式:


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

您可以这样写:

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

(\s|[!-/:-@\[-`\{-~])*\s(\s|[!-/:-@\[-`\{-~])*
RegExp需要一个
\s
(空格字符),并在前后选择als空格和非字母数字字符

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

    • 你可以这样写:

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

      (\s|[!-/:-@\[-`\{-~])*\s(\s|[!-/:-@\[-`\{-~])*
      
      RegExp需要一个
      \s
      (空格字符),并在前后选择als空格和非字母数字字符

      • \s
        匹配所有空格
      • !-/
        /
      • :-@
        @
      • \[-`
        [
        `
      • \{-~
        {
        ~

      您可以将单词边界字符分为两组

    • 不能单独使用的字符
    • 可以单独使用的字符
    • 与您的示例一起使用的正则表达式是:

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


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

      您可以将单词边界字符组织到两个组中

    • 不能单独使用的字符
    • 可以单独使用的字符
    • 与您的示例一起使用的正则表达式是:

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


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

      也许可以尝试
      [^A-Za-z'-][-]?
      …您是否遗漏了“就这样”中的空格句子的一部分?不也应该包括吗?也许可以试试
      [^A-Za-z'-][-]?
      …您是否遗漏了“就这些”中的空格这个句子的一部分?是否也应该包括?还是在单词的中间与<代码> ->代码>或>代码> <代码>。@ 4CasyOh,是的,我没有看到这个问题的部分。在单词中间,它仍然与<代码> ->代码>或<代码> > /代码>。h很容易理解。将它与@t.niese的答案结合起来,并添加一种检测前导单引号和连字符的方法,我得到了
      ^['-].[\s!-/:-[-
      \{-~'-]{2,}-[\s!-/:-[-
      \{-~]
      您的方法很容易理解。将其与@t.niese的答案结合起来,并添加一种检测前导单引号和连字符的方法,我得到了
      ^['-].[\s!-/:-@\[-
      \{-~'-]{2,}124;[\ s!-/:-@[-
      \{-].