我正在测试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!');
});
答案 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
匹配数字和下划线)