0

我想通过正则表达式验证输入。如果用户输入带有 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 任何字符都不会被接受。谢谢

4

2 回答 2

0

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

它也无法检查您未提及的所有其他无效字符...!£#@ 等。

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

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

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

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

if (!val.match(regEx)) {
于 2013-06-28T08:23:01.563 回答
0

这个能满足你的需要吗?

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

为您

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

你已经定义了regEx一个字符串,所以它不会生效。

于 2013-06-28T08:13:24.803 回答