正则表达式(javascript)允许\ w但不是单个指定的单词

时间:2014-04-18 09:02:16

标签: javascript regex html5

我一直在撞墙,试图用我的问题解决几个小时的问题"。

我需要一个javascript(html5输入)正则表达式模式,在尚未提交的注册表单中,通常允许:^[\w]+$但在提交后,如果处理该帖子的页面发现已经使用了该用户名,将用户带回到注册表单(现在预先填写了他/她输入的值)。

这次"用户名"输入字段应该有一个模式,不允许用户再次键入相同的用户名,但其他一切都会正常。

我已经在http://regex101.com/#javascript玩了一遍,并且想出了我想要的100%的反对意见:

^(?=[\w]*)test(?=[\w]*)$

我一直用字符串测试我的模式:

  • abctestabc
  • test
  • dfea
  • atest
  • testa

正则表达式我尝试获取的内容应与我的测试字符串上的其他内容匹配,除了" 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" />



请Stackoverflow,Pimp我的正则表达式!

2 个答案:

答案 0 :(得分:4)

user3548238,你的意思是这个吗?

^(?!test$)\w+$

此模式将允许\ w +,与之前一样,但不允许“测试”。 这是通过lookahead完成的。

答案 1 :(得分:0)