Javascript 字母专用数字的正则表达式
我想勾选几个必须满足以下条件的文本框: 我的意思是字母表来自a-z(大写和小写)数字0-9,特殊字符是~`!@#$%^&*()-_+={}[];:'“,./Javascript 字母专用数字的正则表达式,javascript,regex,Javascript,Regex,我想勾选几个必须满足以下条件的文本框: 我的意思是字母表来自a-z(大写和小写)数字0-9,特殊字符是~`!@#$%^&*()-_+={}[];:'“,./ 它只能包含字母表 它不能只包含数字 它不能只包含特殊字符 它不能只包含数字和特殊字符 它可以包含字母、数字和特殊字符 它可以包含字母和数字 它可以包含字母表和特殊字符 我找到了解决方案,但似乎不适合我: /^[a-z0-9/. -!@#$%^&*(){}:;"',/?]+$/i 我将其检查为: var alpha=/^[a-z0-
/^[a-z0-9/. -!@#$%^&*(){}:;"',/?]+$/i
我将其检查为:
var alpha=/^[a-z0-9/. -!@#$%^&*(){}:;"',/?]+$/i;
if (!alpha.test(username.value))
{
alert('Invalid username');
document.theForm.username.focus();
return false;
}
你能给出一些输入示例吗?你能试试这个吗
/.*?[a-zA-Z]+.*/
或者,如果需要指定特殊字符列表:
/[list of chars]*?[a-zA-Z]+[list of chars]*/
这个问题可以重新表述为匹配只包含字符的字符串
A-Za-z0-9~`!@#$%^&*()-_+={}[];:'",.<>/?
编辑:仔细阅读后,我注意到您不允许反斜杠!如果您想允许反斜杠,上面的正则表达式可以;如果不允许,您应该这样修改它:
[!-\[\]-~]*[A-Za-z][!-\[\]-~]*
这有点难看,因为要排除反斜杠,我们必须说
- 范围
至!
至[
的所有字符,明确提及~
和[
需要使用]
转义\
\
,以便可以使用上面更简单的正则表达式
编辑2
为了提高正则表达式的效率,您应该使用不情愿的量词(正如kcsoft所做的那样):
同样对于JavaScript,但对于Java,如果您使用的是匹配
,则应锚定正则表达式以匹配整个字符串,在JavaScript中给出以下内容:
/^[!-~]*?[A-Za-z][!-~]*$/
而且,正如您在问题中所做的那样,您可以使用i
修饰符将其进一步缩短:
/^[!-~]*?[A-Z][!-~]*$/i
需要澄清:1.什么是“特殊字符”?2.您标记了这个Java和JavaScript,但是Java正则表达式更方便,因为它们可以使用
\p{L}
提取任何Unicode字母;在JavaScript中这样做是非常繁琐的。您所说的“字母表”是什么意思“?为了简化1-7:它必须至少包含一个字母,也可能包含数字和特殊字符。不完全是重复的,但足够接近:-您可以很容易地调整此解决方案以解决您的问题。我已编辑了我的问题。如果它包含反斜杠等非特殊字符,请您查看它。”,它是否无效?@user2322631此正则表达式允许使用列表之外的字符,例如é
和ü
以及空格、制表符和各种控制字符,因为
可以匹配除新行以外的任何字符。注意正则表达式中的点。如果我只包含像-:,这样的特殊字符,我应该在上面的正则表达式中做什么更改?您需要在正则表达式中定义您的列表。比如/[角色列表]*?[a-zA-Z]+[角色列表]*/我怀疑OP是否知道他/她真正需要什么“特殊”角色。例如,正则表达式中缺少[
,]
,
,但后来包含在说明中。另外,/
包含了两次,所以其中一个应该是\
。是的,我猜目的是“所有ASCII可打印的标点符号”,即U+0021到U+007F范围内的字符,它们不是字母和数字。
/^[!-~]*?[A-Za-z][!-~]*$/
/^[!-~]*?[A-Z][!-~]*$/i