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

如何检查没有空格和特殊字符的输入字符串,除了两个特殊字符(即&和)

  •  0
  • Biki  · 技术社区  · 14 年前

    我正在尝试验证 input string (可以在文本框中复制和粘贴)。 输入的输入应包含一个或多个 alphabetic characters ,数字和另外两个特殊字符( & Ñ ,但没有嵌入的空间。

    注意:字母字符必须存在,但数字和这两个特殊字符可能存在,也可能不存在,以创建有效的输入。

    我正在使用jquery进行客户端验证。

    • 替代方法:

      如果有人可以帮助我如何检测任何特殊字符和空格的出现,除了任何输入字符串中的“&”和“”,那么我的问题也可以解决。

    3 回复  |  直到 10 年前
        1
  •  1
  •   Uphill_ What '1    14 年前

    检测在这种情况下不允许的内容不是一个好主意。您提到检测除这两个(,&)和空格之外的特殊字符是可以接受的。那标签呢?新行字符怎么办?非拉丁字符呢?如果你确信这永远不会发生,那么继续检测特殊字符。如果在以下regex中进行匹配,则输入无效:

    [~!\@#\$\%\ ^ \&*()\+\=-[]\ \ \ \ \'\“\;\:\/\?& \ \ \ \ & lt;']

    上面提供的解决方案很好,它检查是否使用了正确的字符,但是即使使用了上面的任何特殊字符,它也将匹配。我想这不是你想要的。以下是修改后的版本:

    ^([a-za-z]+[^a-za-z\d&] )|([^a-za-z\d&] [a-z a-z]+)([^a-z a-z\d&] [a-z a-z]+[^a-z a-z\d&] )

    如果匹配,则输入有效,否则无效。这可能不是最有效的regex,但应该可以工作。

    顺便说一句,一些示例输入文本将非常有用!


    无大写字母版本:

    ^([a-z]+[^a-z\d&] )|([^a-z\d&] [a-z]+)([^a-z\d&] [a-z]+[^a-z\d&] )

        2
  •  0
  •   Tim Pietzcker    14 年前

    如果只允许大写字母、数字和 & Ñ 作为有效字符,然后使用

    ^(?=.*[A-Z])[A-Z\d&Ñ]*$
    

    冗长的正则表达式:

    ^                   # anchor the search at the start of the string
    (?=.*[A-Z])         # assert that there is at least one letter A-Z in the string
    [A-Z\d&Ñ]*       # match any number of allowed characters
    $                   # anchor the search at the end of the string
    

    但是,您可能希望强制使用最小长度,因为当前字符串 A 将是有效输入。例如, ^(?=.*[A-Z])[A-Z\d&Ñ]{8,}$ 将确保最小长度为8。

    如果希望输入包含不允许使用的字符时匹配的regex,则可以使用

    [^A-Z\d&Ñ]
    

    但是,您还需要第二个regex来确保输入中至少有一个字母。我认为第一种方法更具可读性,即使是在不能使用详细/注释的正则表达式的JavaScript中。

        3
  •  0
  •   Mad Angle    10 年前

    实际上我已经完成了验证 Jquery alphanumeric 插件

    "$('#txtId').alphanumeric({ allow: "&Ñ" });".

    说明:这允许所有 alpha numeric 字符限制所有其他字符(特殊字符已寻址)。在允许部分,我可以放置允许的特殊字符。