我是全新的,有疑问。我有一个XML参数表单文件,其字段验证如下:
ValidChars="(?=.\*[a-zA-Z0-9@#$%*])" ErrorOnValidationFailure="Entered Invalid Char."
当前表达式((?=.*[a-zA-Z0-9@#$%*]))
仅在第一个char不正确时才会生成错误。输入有效字符后,验证将停止工作。是否有正则表达式,使我能够识别字符串的任何部分中的无效字符?
由于
答案 0 :(得分:1)
重点是(?=.*[a-zA-Z0-9@#$%*])
正则表达式只执行一次,如果输入字符串包含 0+字符后字符类中定义的指定范围/集中的字符(在NFA正则表达式中) ,换行/回车/等等 - 取决于正则表达式库。)
您需要使用的是一个正则表达式来检查整个字符串是否包含您的白名单字符,因此您需要
^[a-zA-Z0-9@#$%*]*$
请参阅regex demo
$
可能会被Python中的\Z
替换,或者PCRE / .NET正则表达式中的\z
替换为不允许接受字符串末尾的尾随换行符。
如果默认情况下锚定模式的方法使用模式,则不需要^
,$
,\A
,也不需要\z
/ {{1} }。