我允许像这样的正则表达式使用空格:
JavaScript:
var re_username = /^[a-zA-Z\040\.\-]+$/;
var is_username = re_username.test($('#chatusername').val());
console.log(is_username);
...但我想在开始和结束时禁止它。这有效:
JavaScript:
var re_username = /^[a-zA-Z]+[a-zA-Z\040\.\-]+[a-zA-Z\.]+$/;
...但我需要输入至少 3 个(<3 位数字返回 false,尽管我输入了例如 A)正则表达式返回 true 的数字,这会导致添加类和东西时出现问题 ...
我发现这个允许在开头和结尾有空格
JavaScript:
var re_username = /^\S+(?: \S+)*$/
但它允许所有字符......如何匹配我的目标正则表达式?我试过了...但它已经不起作用了..
var re_username = /^\S+([a-zA-Z]\040\S+)*$/;
最佳答案
使用
var re_username = /^[a-zA-Z.-]+(?:\040+[a-zA-Z.-]+)*$/;
会匹配
^
- 字符串的开始[a-zA-Z.-]+
- 1+ 个字母,.
和-
(?:\040+[a-zA-Z.-]+)*
- 0+ 序列\040+
- 1+ 个常规空格[a-zA-Z.-]+
- 1+ 个字母,.
和-
$
- 字符串结尾
参见 regex demo .
注意:如果您不想允许连续的多个空格,请删除 \040
之后的 +
。
另一种效率较低的方法是通过前瞻:
var re_username = /^(?!\040|.*\040$)[a-zA-Z\040.-]+$/;
^^^^^^^^^^^^^^^
在这里,如果在字符串的开头或任何 0+ 个字符之后发现空格,则 (?!\040|.*\040$)
否定先行将导致匹配失败 ( .*
) 在字符串的末尾 ($
).
关于javascript - 正则表达式的客户端验证 - 允许中间有空格但不允许开头和结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43743978/