1

我需要让它工作,我已经在谷歌上搜索了大约45几分钟。

这就是我想要做的......(请注意,我正在使用替换功能,所以我猜正则表达式应该是我想要的任何东西......?)

   $('#parameter_name').keyup(function(e){   

      var regex_str = '/@[a-zA-Z][a-zA-Z0-9]/';

      var val       = $(this).val();     

      val           = val.replace(regex_str, ''); 

      $(this).val(val); 
   });

这就是我需要正则表达式允许的:

  • 第一个字符必须是@
  • 第二个字符必须在[a-zA-Z]
  • 可能有 0-多个以下字符[a-zA-Z0-9_]

(旁注:我意识到这_可能在第二个字符位置,但这有点复杂,因为它需要第三个字符不是 a_并且不符合我所拥有的其余规则......我正在做简单的事情,只是不允许它)

我放在那里的东西..它最终会留下空白并做其他奇怪的事情。

编辑: 所以...我尝试了几种方法,但从未找到完美的解决方案

4

2 回答 2

0

对于您的书面规范,您似乎需要

/^@[a-zA-Z][a-zA-Z0-9]*/

匹配字符串的^开头,因此您之前不能拥有某些东西。

如果您想要匹配字符串中可能不止一次出现,那么您可能需要测试单词边界并添加g标志:

/\b@[a-zA-Z][a-zA-Z0-9]*\b/g

另请注意,正则表达式不是字符串,而是正则表达式文字,您必须删除': 它是

val.replace(/\b@[a-zA-Z][a-zA-Z0-9]*\b/g, ''); 

代替

val.replace('/\b@[a-zA-Z][a-zA-Z0-9]*\b/g', ''); 
于 2013-03-08T18:22:34.270 回答
0

这应该有效:

'/@[a-zA-Z][a-zA-Z0-9_]*/'

@ 字符,后跟一个字母,后跟零个或多个字母、数字和下划线。

于 2013-03-08T18:24:48.953 回答