正则表达式(javascript)允许-w,但不允许单个指定单词



几个小时以来,我一直在用谷歌搜索我的"问题"的解决方案。

我需要一个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/

演示

相关内容

最新更新