正则表达式,在数字之间用连字符表示

时间:2015-06-21 07:02:48

标签: c# regex

我必须检查用户输入的字符串是否采用特定格式,例如:

@"^\(?([0-9]{3})\)?[-. ]?([0-9]{4})[-. ]?([0-9]{7})[-. ]?([0-9]{1})$"

即在前3位数后的连字符,然后是4位数后的另一个连字符,在七位数后连字符,然后是一位数。

我使用了下面的正则表达式

-

它适用于上面的表达式,但它也会传递没有eg:- 123-1234-1234567-1 //pass 123123412345671 //also getting pass. 的表达式

$(document).click(function () {
    $('#contact-form').submit(function () {
        //validation
        if (!checkgender() || !checkpassword()) {
            return false;
        } else {
            return true;
        }
    });
});

第二个字符串应该失败。我应该在正则表达式中做些什么改变来实现同样的目标?

2 个答案:

答案 0 :(得分:1)

您可以简单地使用:

^\d{3}-\d{4}-\d{7}-\d$

如果您想将点和空格也作为分隔符,请使用:

^\d{3}[-. ]\d{4}[-. ]\d{7}[-. ]\d$

答案 1 :(得分:1)

问题是您在//DATA_PATH = Environment.getExternalStorageDirectory().toString() + "/MyOCRApp/tessdata"; AssetManager assetManager = getAssets(); String[] files = new String[0]; try { files = assetManager.list(""); } catch (IOException e) { e.printStackTrace(); } for (String currPath:files){ if (currPath.equals("tessdata")){ DATA_PATH = "///android_asset/"+ currPath; } } 之后有可选的量词?。 删除它们,它应该工作正常

[. ]

Regex demo

@"^\(?([0-9]{3})\)?[-. ]([0-9]{4})[-. ]([0-9]{7})[-. ]([0-9]{1})$" 使前面的模式可选,因为它匹配0或1个字符。因此,在第二个示例中,正则表达式引擎安全地匹配零?以匹配整个字符串