Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于美国州验证的java正则表达式_Java_Regex - Fatal编程技术网

用于美国州验证的java正则表达式

用于美国州验证的java正则表达式,java,regex,Java,Regex,我编写这个java方法是为了执行正则表达式,但由于它在所有条件下都失败,所以遗漏了一些东西。我对regex还不熟悉,不知道是什么原因导致它失败。有专家能帮我吗 public static boolean isStateValid(String state){ String expression = "/^(?:A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[

我编写这个java方法是为了执行正则表达式,但由于它在所有条件下都失败,所以遗漏了一些东西。我对regex还不熟悉,不知道是什么原因导致它失败。有专家能帮我吗

public static boolean isStateValid(String state){
        String expression = "/^(?:A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])*$/";
        CharSequence inputStr = state;
        Pattern pattern = Pattern.compile(expression);
        Matcher matcher = pattern.matcher(inputStr);
        if (matcher.matches()) {
            return true;
        }else{
            return false;
        }
    }
阅读评论后更改为此,但仍不起作用

public static boolean isStateValid(String state) {
        CharSequence inputStr = state;
        Pattern pattern = Pattern
                .compile("AL|AK|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL|IN|KS|KY|LA|MA|MD|ME|MI|MN|MO|MS|MT|NC|ND|NE|NH|NJ|NM|NV|NY|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VA|VT|WA|WI|WV|WY|al|ak|ar|az|ca|co|ct|dc|de|fl|ga|hi|ia|id|il|in|ks|ky|la|ma|md|me|mi|mn|mo|ms|mt|nc|nd|ne|nh|nj|nm|nv|ny|oh|ok|or|pa|ri|sc|sd|tn|tx|ut|va|vt|wa|wi|wv|wy");
        Matcher matcher = pattern.matcher(inputStr);
        if (matcher.matches()) {
            return true;
        } else {
            return false;
        }
    }

这是练习正则表达式的练习,还是将在生产环境中使用的练习


如果是后者,那么使用查找列表会更好。在这种情况下,正则表达式会混淆和过度复杂您试图执行的操作。

它不喜欢模式开头和结尾的
/
字符。当我移除这些时,它就起作用了。另外,我认为您不希望在结尾使用重复字符。

很多东西

首先,它不是perl。删除前导斜杠和尾随斜杠。 第二,为什么非捕获组?我的意思是,
(?:
这里根本不需要团体。 第三,为什么这么复杂?就这么说吧

模式编译(“AL | AK | AR | AZ | CA”)


等等,所有州。您的优化没有任何好处。它只会使regex变得更复杂。

此项区分大小写,包括美国领土:

^(?-i:A[LKSZRAEP]|C[AOT]|D[EC]|F[LM]|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEHINOPST]|N[CDEHJMVY]|O[HKR]|P[ARW]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$

但是,我认为使用正则表达式是过分的。使用某种列表或数组。

我没有使用过这个特定的工具,但使用过一个类似的商业工具,但我认为您会受益于这样的工具:

另外,还可以返回matcher.matches()而不是if块,但我想这取决于个人偏好将所有状态放在一个集合中,并使用
set.Contains()
方法。只是输入了相同的情绪。谢谢你帮我节省了时间。我这样做了,但我仍然看不到做
a[LKRZ]的积极结果|事实上,如果你坚持这件事的话,那么你就坚持这件事。@truthea实际打字?只要从任何地方复制粘贴就可以了。那么,你怎么办呢?)关于/关于/关于什么呢?关于/关于(AL| AK|AK| AK| AK|你的情况怎么样呢?)怎么样怎么样呢/关于(AL| AK AK| AK| AK AR| AR| AR| AR| AR| Ar124;Ar124;AR| Ar124;AR| AR| Ar124;AR| Ar124;AR| AR| AR| AR| Ar124;AAAAAAAA124;;;新罕布什尔州新罕布什尔州新罕布什尔州新罕布什尔州新罕布什尔州新罕布什尔州$/igIt支持除UM以外的所有功能(美国小离岛)