代码之家  ›  专栏  ›  技术社区  ›  gloomy.penguin

Regex和我的JQuery函数用于sql变量名验证

  •  1
  • gloomy.penguin  · 技术社区  · 11 年前

    我需要把它发挥作用,我已经在谷歌上搜索了大约 45 几分钟后。

    这就是我要做的……(注意,我使用的是replace函数,所以我想regex应该不是我想要的…?)

       $('#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_]

    (旁注:我意识到 _ 可能处于第二个字符的位置,但这会变得有点复杂,因为这需要第三个字符不是 _ 这不符合我的其他规则,所以……我在做简单的事情,只是不允许)

    我在里面放了什么。。它最终留下了空白,并做了其他奇怪的事情。

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

    2 回复  |  直到 11 年前
        1
  •  0
  •   Denys Séguret    11 年前

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

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

    这个 ^ 匹配字符串的开头,这样之前就不会有内容了。

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

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

    还要注意,正则表达式不是字符串,而是 regex literal ,必须删除 ' :是的

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

    而不是

    val.replace('/\b@[a-zA-Z][a-zA-Z0-9]*\b/g', ''); 
    
        2
  •  0
  •   Phillip Schmidt    11 年前

    这应该起作用:

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

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