几个小时以来,我一直在用谷歌搜索我的"问题"的解决方案。
我需要一个javascript(html5输入)regex模式,在一个尚未提交的注册表单中,它通常允许:^[w]+$
,但在提交后,如果处理帖子的页面发现用户名已经被占用,则会将用户带回注册表单(现在已经预先填充了他/她键入的值)。
这一次,"用户名"输入字段应该有一个模式,不允许用户再次键入相同的用户名,但其他一切都会很好。
我在上玩过http://regex101.com/#javascript并提出了100%相反的我想要的:
^(?=[w]*)test(?=[w]*)$
我一直在用字符串测试我的模式:
abctestabc
test
dfea
atest
testa
我试图获得的Regex应该与我的测试字符串上的所有其他内容匹配,除了"test"和我的模式只匹配那一个。
我想出的第二种模式(我很快就认为这是我想要的)是:
^(?:([w]+test[w]+)|([w]+test|(test[w]+)))$
但没过多久,我就注意到这只允许用户输入:
*test
*test*
test*
但不包括"测试"。
第一次在表单上:
<input type="text" name="username" pattern="^[w]+$" />
借调时间应为:
<input type="text" name="username" pattern="**PATTERN HERE**" value="test" />
所以请堆叠溢出,Pimp我的正则表达式!
user3548238,你是这个意思吗?
^(?!test$)w+$
这个模式将允许\w+,就像以前一样,但不允许"测试"。这是通过前瞻性实现的。
你为什么不开始在这里拉皮条?
http://www.infotuts.com/live-username-availability-checker-and-password-strength-indicator-with-jquery-and-ajax/
演示