如何确定为`Int,VarChar,Date,Time..`输入的模式等

how to determine entered pattern is for `Int,VarChar,Date,Time...` etc

本文关键字:输入 Time 模式 VarChar 何确定 Int Date      更新时间:2023-09-26

我有一个下拉列表,其中包含DataType
以及一个文本框,这是用于输入CCD_ 2的
如果我在文本框中输入/test/
或从下拉菜单Int
中选择如果在文本框/[0-9]/
中输入,则其模式错误则其CCD_ 6
这是我的小提琴链接
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);
});

它怎么可能

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/

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

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"
    ]
};

然后,如果输入的regex与某个特定类型的示例匹配,则可以使其有效:

$("#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");
    }
});

主要问题是它不会涵盖复杂/特殊的正则表达式。例如,带有/^5/Int在给定的示例中无效,因为没有以5开头的Int示例。VarChar/bca/都无效。但是,如果你能为每种类型提供足够的示例,这可以满足你的需求:)

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