我想允许3个字符第1个下划线(_),第2个连字符( - )第3个点(。)
但是我想把所有条件一次只允许一个字符的条件,也只是一次。
e.g
允许用户名= abc.def,abc-def,abc_def
不允许usernames = abc.de.f alert here(用户名中只允许使用一个特殊字符)
不允许usernames = abc.de-f,abc.de_f,ab-cd_ef
我该怎么做。
答案 0 :(得分:1)
尝试/^[a-z]*[-._]?[a-z]*$/
var tests = ['abc.def', 'abc-def', 'abc_def', 'abc.de.f','abc.de-f' , 'abc.de_f', 'ab-cd_ef'];
$.each(tests, function(a,b) {
$('body').append('<div>' + b + ' = ' + regIt(b) + '</div>');
});
function regIt(str) {
return /^[a-z]*[-._]?[a-z]*$/.test(str);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
答案 1 :(得分:0)
^[a-z]*([-._]?)(?:[a-z]|\1)*$
此正则表达式将匹配字母,直到它到达字符串的末尾。如果它到达符号(-
.
或_
),它将该符号存储为组1,并保持字母或相同符号的匹配,直到字符串结束。
以下是匹配的示例:
_something
something-something
foo_bar_baz
foo.
这里有一些无效的字符串:
my_file.txt
alpha.bravo_charlie
not-working_