在OR中将正则表达式组合在一起?

时间:2012-01-13 12:47:00

标签: javascript jquery regex

我正在测试input class="k"是否包含 HTML ID 属性的有效字符,如果不是则显示alert

  

ID和NAME令牌必须以字母([A-Za-z])开头,可能是   后跟任意数量的字母,数字([0-9]),连字符(“ - ”),   下划线(“_”),冒号(“:”)和句点(“。”)。

我想在逻辑OR中组合正则表达式。 有没有办法将它们合并到一个正则表达式中?

$('.k').keyup(function(){
   if((/^[\d]/).test($(this).val())) alert('Not valid!');
   if((/[\s]/).test($(this).val()))  alert('Not valid!');
});

2 个答案:

答案 0 :(得分:3)

管道是RegEx中的逻辑OR。在这种情况下,不需要parens。但是,通常,您要对子模式进行分组:

/(^\d|\s)/

ID的模式(\w = [a-zA-Z0-9_]):

/^[a-zA-Z][\w:.-]*$/

答案 1 :(得分:1)

如果您知道ID或NAME令牌必须精确匹配,您可以编写正则表达式以仅匹配有效的ID:

^[A-Za-z]([-\w:.])*$

如果输入与输入不匹配,则表示匹配无效(注意:\w匹配数字和下划线)