我正在尝试验证input string
(可以在文本框中复制和粘贴)。
输入的输入应包含一个或多个alphabetic characters
,数字和另外两个特殊字符(&
和Ñ
),但不包含嵌入空格。
注意:必须出现字母字符,但数字和这两个特殊字符可能会或可能不会出现以创建有效的输入。
我正在使用Jquery进行客户端验证。
替代方法:
如果有人可以帮助我如何检测任何特殊字符和空格的出现,除了'&'和任何输入字符串中的'Ñ',那么我的问题也可以解决。
答案 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
字符&限制所有其他字符(特殊字符已被解决)。在允许部分中,我可以放置允许的特殊字符。