这是我想出的,但也接受;
。有人可以帮助我理解我所缺少的东西
var VALID_ALPHANUMERIC_WITH_SPECIAL_CHARS = /^(?=.*[0-9])|(?=.*[a-zA-Z])([a-zA-Z0-9]|[@#!%*&_\/.:{}\[\]\$\-\=\?\\\(\)\+\~\`\^\<\>])+$/;
由于
答案 0 :(得分:1)
如果要检查至少有一个字母数字字符,并在文本中允许使用字母数字+一些特殊字符,则下面的正则表达式应该可以正常工作。我也冒昧地删除了一些不必要的逃脱。
/^(?=.*[A-Za-z0-9])[a-zA-Z0-9@#!%*&_\/.:{}\[\]$=?\\()+~`^<>-]+$/
在某些地方可以进一步简化,但为了清楚起见,我将它们单独留下。
答案 1 :(得分:1)
@nhahtdh已经为您提供了正确的正则表达式。如果你想了解你的正则表达式失败的原因,让我们来看看它:
^(?=.*[0-9]) # Either anchor the match at the start and assert
# that there is at least one ASCII digit
| # OR
# Assert that there is
(?=.*[a-zA-Z]) # at least one ASCII letter, then match
([a-zA-Z0-9]|[special chars...])+ # one or more of these characters
$ # with an unnecessary alternation; anchor the match to the end
你看到了问题吗?
答案 2 :(得分:0)
如果您想接受;
以外的特殊字符,其中只有一个字母数字字符
var re = /^[@#!%*&_\/.:{}\[\]$\-=?\\()+~`^<>]*[a-zA-Z0-9][@#!%*&_\/.:{}\[\]$\-=?\\()+~`^<>]*$/;
如果您想要除;
以外的特殊字符至少一个字母数字字符
var re = /^[a-zA-Z0-9@#!%*&_\/.:{}\[\]$\-=?\\()+~`^<>]*[a-zA-Z0-9][a-zA-Z0-9@#!%*&_\/.:{}\[\]$\-=?\\()+~`^<>]*$/;
JSFiddle进行测试。
答案 3 :(得分:0)
此部分(?=.*[a-zA-Z])
匹配后跟字母的任何字符,因此匹配;a
您可以执行(?=[^;]*[a-zA-Z])
以匹配除;