2

我有一个下拉其包含DataType
和一个用于输入的文本框Regex Pattern
如果我/test/在文本框中输入。
或从下拉列表中选择,Int
如果在文本框中输入,则其模式错误,/[0-9]/
则其correct pattern.
这是我的小提琴链接
http://jsfiddle.net/VGF9B/2/
这是我的script

var dropdownValue = 'selectValue';
$('select').change(function(){
    dropdownValue = $(this).val();
});
$('#pattern').focusout(function(){
    alert(dropdownValue);
    var pattern = new RegExp($('#pattern').val());
    alert(pattern);
});

怎么可能

4

2 回答 2

0
var intRx=/^\d*$/;                            //22
var varCharRx=/^\w*$/;                        //abc
var dateRx=/^\d{2}-\d{2}-\d{4}$/;            //01-01-2011
var time=/^\d{2}:\d{2}$/;                    //12:00

    str=$(this).val();        
    if(intRx.test(str))
        alert("int");
    else if(varCharRx.test(str))
        alert("varchar");
    else if(dateRx.test(str))
        alert("date");
    else if(time.test(str))
        alert("time");

请记住,这对 EXACT 模式进行了数学运算,如果您想要一些其他异常,则必须在正则表达式中添加它!它不是用于验证

http://jsfiddle.net/VGF9B/4/

于 2013-08-06T09:16:24.680 回答
0

我能想到的是使用示例,即应该匹配正则表达式的典型输入:

var examples = {
    "Date": [
        "2010-01-01", "10-01-01", "2010-1-1", "10-1-1", "01-01-2010", "01-01-10", "1-1-2010", "1-1-10",
        "2010/01/01", "10/01/01", "2010/1/1", "10/1/1", "01/01/2010", "01/01/10", "1/1/2010", "1/1/10"
    ],
    "Int": [
        "0", "0123456789"
    ],
    "VarChar": [
        "a", "abcdefghijklmnopqrstuvwxyz", "A", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    ]
};

然后,如果输入的正则表达式匹配特定类型的示例之一,您可以验证它:

$("#pattern").blur(function() {
    var pattern = this.value;
    var regex = new RegExp(pattern);
    var type = $("select").val();
    var validPattern = false;
    if (type in examples) {
        for (var i = 0; i < examples[type].length, i++) {
            var example = examples[i];
            if (regex.test(example)) {
                validPattern = true;
                break;
            }
        }
    } else {
        alert("No examples found for type '" + type + "'");
    }
    if (validPattern) {
        alert("Valid pattern");
    } else {
        alert("Invalid pattern");
    }
});

主要问题是它不会涵盖复杂/特殊的正则表达式。例如,对于给定的示例,Intwith/^5/将无效,因为没有以 .Int开头的示例5VarCharwith/bca/也无效。但是,如果您设法为每种类型提供足够的示例,这可能会满足您的需求:)

你可以在这里看到一个例子。

于 2013-08-06T11:32:58.963 回答