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

时间:2010-10-20 09:30:57

标签: regex jquery-plugins

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

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

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

  • 替代方法:

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

3 个答案:

答案 0 :(得分:1)

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

  

[\〜\ @#\ $ \%\ ^ \&安培; *()_ + \ = - [] {} \\ | \'\“\; \:?\ / \> \ ,\<`]

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

  

^(([A-ZA-Z] + [^ A-ZA-Z \ d&安培; N] )|([^ A-ZA-Z \ d&安培; N] [A -Za-Z] +)|([^ A-ZA-Z \ d&安培; N] [A-ZA-Z] + [^ A-ZA-Z \ d&安培; N] )) $

如果匹配则输入有效,否则不是。这可能不是最有效的正则表达式,但它应该工作。

顺便说一下,一些示例输入文本确实会有所帮助!


没有大写字母的版本:

  

^(([AZ] + [^ AZ \ d&安培; N] )|([^ AZ \ d&安培; N] [AZ] +)|([^ AZ \ d&安培; N ] [AZ] + [^ AZ \ d&安培; N] ))$

答案 1 :(得分:0)

如果您只想允许大写字母,数字以及&Ñ作为有效字符,请使用

^(?=.*[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.

如果你想要一个匹配的正则表达式,如果输入包含一个不允许的字符,那么你可以使用

[^A-Z\d&Ñ]

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

答案 2 :(得分:0)

实际上我完成了使用Jquery alphanumeric插件

的验证

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

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