代码之家  ›  专栏  ›  技术社区  ›  Jason

Preg“匹配字母数字-”和空格

  •  5
  • Jason  · 技术社区  · 16 年前

    有没有人有一个正则表达式允许字母数字和-“,”以及空格?

    2 回复  |  直到 10 年前
        1
  •  3
  •   Gumbo    16 年前

    试试这个:

    /^[A-Za-z0-9-_",'\s]+$/
    
        2
  •  0
  •   Fatal Cleric    12 年前

    我在regex中读了很多关于\s标志的文章,我看到它像糖果一样散布在stackoverflow上,但是看起来\s标志与所有的元字符匹配,也跳过了换行符。

    这将允许忽略过滤用户输入的所有类型的字符,你不想在你的软件,网站或数据库。

    \s标志也会跳过新行换行,使过滤后的代码容易被包含,因此使用此方法时,请自行承担风险,否则会很高兴被黑客攻击。。。

    你可以这样考虑: /[^\p{Xan}]++$/D

    • \p{Xan} 匹配所有unicode字母和数字,如果
      不允许所有字母空白,那么我不确定如何安全 将这些匹配为过滤器。

    • ++ 火柴

    • $/D 使正则表达式在字符串末尾终止,而不是 在换行之前跳过任何字符

    裁判: http://php.net/manual/en/reference.pcre.pattern.modifiers.php

    s(Pcr_DOTALL) 如果设置了此修饰符,则模式中的点元字符将匹配所有字符,包括换行符。没有它,新行就 排除。这个修饰符相当于Perl的/s修饰符。A 负数类,如[^a]总是匹配换行符, 独立于此修改器的设置。

    元字符:

    裁判: http://en.wikipedia.org/wiki/Metacharacter

    元字符是具有特殊含义的字符(而不是 (字面意思)指计算机程序,如shell解释器 或者正则表达式引擎。

    在正则表达式中,有11个元字符必须始终 前接反斜杠\,用于表达式内部:

    开方括号[,反斜杠\,插入符号^,美元 符号$,句点或点,竖线或竖线符号| 圆括号(和右圆括号)。[1]

    如果要将这些字符中的任何一个用作正则表达式中的文本, 你需要用反斜杠来逃避它们。如果你想匹配1+1=2, 正确的regex是1+1=2。否则,加号将有一个 特殊意义。