【问题标题】:regular expression to match english words with some other characters正则表达式将英文单词与其他一些字符匹配
【发布时间】:2012-01-22 14:37:04
【问题描述】:

我使用这个正则表达式:^[a-zA-Z0-9]*$ 来匹配英文短语,但是,我希望这个表达式匹配可能包含部分或全部这些字符在开头、中间或开头的英文短语他们的结局: ? > < ; , { } [ ] - _ + = ! @ # $ % ^ & * | ' 以及空格字符。

如何更新此正则表达式以满足此要求?

提前谢谢你...

【问题讨论】:

  • 你在匹配单词或短语吗?
  • 天哪。为什么不使用^.*$ 作为模式。它会匹配所有的。
  • @Shiplu:匹配 ^.*$ 的目的是什么,因为它匹配所有?
  • @Karolos,这就是它在评论中的原因。 OP 的要求不等于^.*$
  • @Shiplu:在某种意义上确实如此,因为(几乎)所有字符都已指定,其中没有空格要求,也没有提及 \w 或 \p。

标签: regex


【解决方案1】:

您可以简单地将所有想要的角色添加到您的角色类中。

^[a-zA-Z0-9?><;,{}[\]\-_+=!@#$%\^&*|']*$

您需要使用反斜杠转义以下字符,因为它们被视为字符类中的元字符:]-^

请注意,您的正则表达式也将匹配空字符串,因为它使用 * 量词。如果您只想匹配至少包含一个字符的单词,请将其替换为 + 量词。

【讨论】:

    【解决方案2】:

    您正在寻找这种模式。

    ^[\s\w\d\?><;,\{\}\[\]\-_\+=!@\#\$%^&\*\|\']*$
    

    【讨论】:

      【解决方案3】:

      谢天谢地,我接受了上一个答案中的 \s\w\d 组,并将其他分隔符和特殊字符添加为十六进制 ASCII 范围(您也可以使用 Unicode 范围):

      ^[\s\w\d\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]*$
      

      您可以参考这里ASCII CodesUnicode characters

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-06
        • 2021-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多