我尝试验证一个字符串,它应该只包含字母、数字和特殊字符&-._
。为此,我尝试使用正则表达式。
var pattern = /[a-zA-Z0-9&_\.-]/
var qry = 'abc&*';
if(qry.match(pattern)) {
alert('valid');
}
else{
alert('invalid');
}
在使用上面的代码时,字符串abc&*
是有效的。但是我的要求是显示这个字符串是无效的。例如,当一个字符而不是一个字母,一个数字或特殊字符&-._
出现时,这个字符串应该被评估为无效。
7条答案
按热度按时间cetgtptt1#
将它们添加到允许的字符中,但需要对其中一些字符进行转义,例如-]/\
这样,您就可以删除要禁用的任何单个字符。
此外,您还希望包括字符串placemarker ^和$的开始和结束
正如elclanrs所理解的(我们其他人最初并不理解),模式中需要允许的 * 唯一 * 特殊字符是&-._
[\w]与[a-zA-Z0 - 9_]相同
虽然破折号在列表的开头或结尾时不需要转义,但我更喜欢在添加其他字符时使用它。另外,+表示您至少需要列表中的一个字符。如果零是可以的(即空值),则用 * 代替:
mpgws1up2#
那么,为什么不直接将它们添加到现有的角色类中呢?
如果你需要检查一个字符串是否只由这些字符组成,你还必须锚定表达式:
添加的
^
和$
分别匹配字符串的开头和结尾。测试字母、数字或下划线可以用
\w
来完成,它可以缩短你的表达式:正如Nathan的评论中提到的,如果你不使用
.match()
的结果(它返回一个数组,其中包含匹配的内容),最好使用RegExp.test()
,它返回一个简单的布尔值:如果我误解了这个问题,下面将检查是否满足所有三个单独的条件。
ars1skjm3#
试试这个正则表达式:
您也可以使用
test
。vsnjm48y4#
1tu0hz3e5#
我试了一大堆这样的方法,但没有一个对我所有的测试都有效。所以我发现了这个:
来自此来源:https://www.w3resource.com/javascript/form/password-validation.php
xe55xuns6#
试试这个RegEx:匹配我们在段落和字母表中使用的特殊字符
0dxa2lsx7#
在这里您可以匹配特殊字符: