正则表达式的引导线以验证输入

时间:2013-06-28 07:54:43

标签: javascript jquery regex

我想通过正则表达式验证输入。如果用户在a到z或A到Z中输入任何字符,那么它将不被接受,但如果用户输入+符号或括号或任何数字,则它将被接受。我使用正则表达式,但它没有按照我的要求工作。

var regEx = '/^[A-Za-z]*$/';
            if (flag) {
                var val = jQuery.trim($("input[id*='txtfphone']").val())
                if (val.match(regEx)) {
                    if (_AdjustHeight == 0) {
                        $(".ui-dialog").animate({ height: '+=' + dialog_loader.height + 'px' }, 600, function () {
                            _AdjustHeight = 1;
                            $('#feed_loader').fadeIn('slow').html('<span>' + dialog_Msg.Invalid_Phone + '</span>');
                            $("input[id*='txtfphone']").focus()
                        });
                    }
                    else if (_AdjustHeight == 1) {
                        $('#feed_loader').fadeOut('slow', function () {
                            $('#feed_loader').html('<span>' + dialog_Msg.Invalid_Phone + '</span>');
                        }).fadeIn('slow');

                        $("input[id*='txtfphone']").focus()
                    }
                    flag = false;
                    return false;
                }
            }

所以帮我正确的正则表达式。 如果用户输入

等数据,将被接受
+913325806589
+91 33 25806589
913325806589
91 33 25806589
91 (33) 25806589
+91 (33) 25806589

但如果用户输入任何字母作为输入,则不会被接受。像

aaab
+a913325806589
+91332a5806589
+91332a5806589b etc

a到z任何角色都不会被接受。感谢

2 个答案:

答案 0 :(得分:0)

这个能满足你的需求吗?

var regEx = /^\+?\d+[\d\s]*(\s*\(\d+\)\s*\d*)*$/ //no quote !!

为你的

var regEx = '/^[A-Za-z]*$/'

您已将regEx定义为字符串,因此不会产生任何影响。

答案 1 :(得分:0)

您正在使用的regrex锚定在开头和结尾,这意味着它只会在输入只包含字母时匹配。例如,它不匹配“12a”。

它也无法检查你没有提到的所有其他无效字符......!£#@ etc。

最好使用与您想要的匹配的正则表达式,然后查看输入是否匹配。

根据您的描述和示例,这应与有效输入匹配:

/^\s*\+?[\d\s]*(\([\d\s]+\)?)[\d\s]*$/

然后你需要否定你的匹配测试:

if (!val.match(regEx)) {