Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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

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,我在编写验证现有区域设置的正则表达式时遇到困难 到目前为止,我所做的是这个正则表达式^[a-zA-Z0-9{5,10}$ 但是使用这个正则表达式可以使用以下区域设置 1aa_aa_aaaa只有第二组字母必须包含2或4个字母 2AAAA必须至少包含一个下划线 ^[a-z]{1,8}(([_-]{1})([A-Z]{1})([a-z]{1,8}|[A-Z]{1,2}))?([-_]([A-Z]{1,4}|[0-9]{2,4}))?$ 任何帮助都是非常感谢的!谢谢 那么: ^(?i)[a-z]{2}

我在编写验证现有区域设置的正则表达式时遇到困难

到目前为止,我所做的是这个正则表达式
^[a-zA-Z0-9{5,10}$

但是使用这个正则表达式可以使用以下区域设置

1
aa_aa_aaaa
只有第二组字母必须包含2或4个字母

2<代码>AAAA必须至少包含一个下划线

^[a-z]{1,8}(([_-]{1})([A-Z]{1})([a-z]{1,8}|[A-Z]{1,2}))?([-_]([A-Z]{1,4}|[0-9]{2,4}))?$
任何帮助都是非常感谢的!谢谢

那么:

^(?i)[a-z]{2}_(?:[a-z]{2}){1,2}(?:_[a-z]{2})?$
其中,
(?i)
表示不区分大小写。

如何:

^(?i)[a-z]{2}_(?:[a-z]{2}){1,2}(?:_[a-z]{2})?$

其中,
(?i)
表示不区分大小写。

您应该稍微更改表达式以添加这些附加约束

基本上你会有这个:

^[a-z]{2}(_([a-zA-Z]{2}){1,2})?_[A-Z]{2}$
这将匹配格式为
aa_aa
aa_aa_aa
的区域设置,即至少需要两个2字母组,中间需要一个可选的2或4字母组(该组必须由一个1或2个2字母子组组成)

请注意,我将表达式区分大小写,即第一个两个字母的组需要小写,最后一个(第二个或第三个)组需要大写,正如您发布的列表所暗示的那样。可选的4字母组将允许这两种情况

如果不需要表达式仅在表达式前面的
(?i)
处区分大小写


但是,这只是检查一个可能的区域设置id的格式。您仍然不知道该id是否实际受支持。因此,您可以跳过该步骤,从可用的语言环境中查找具有该id的语言环境。我不确定是否有任何内置功能,但您可以创建
Locale.getAvailableCales()
的映射,其中键是
Locale\toString()
返回的id,然后使用该映射进行查找。

您应该稍微更改表达式以添加这些附加约束

基本上你会有这个:

^[a-z]{2}(_([a-zA-Z]{2}){1,2})?_[A-Z]{2}$
这将匹配格式为
aa_aa
aa_aa_aa
的区域设置,即至少需要两个2字母组,中间需要一个可选的2或4字母组(该组必须由一个1或2个2字母子组组成)

请注意,我将表达式区分大小写,即第一个两个字母的组需要小写,最后一个(第二个或第三个)组需要大写,正如您发布的列表所暗示的那样。可选的4字母组将允许这两种情况

如果不需要表达式仅在表达式前面的
(?i)
处区分大小写


但是,这只是检查一个可能的区域设置id的格式。您仍然不知道该id是否实际受支持。因此,您可以跳过该步骤,从可用的语言环境中查找具有该id的语言环境。我不确定是否有任何内置功能,但您可以创建
Locale.getAvailableCales()
的映射,键是
Locale\toString()
返回的id,然后使用该映射进行查找。

这里是
toString()
-ed表单的regexp,例如,
java.util.Locale

在大多数情况下,你可能会与

  • 郎与国
^(?i)(?[a-z]{2,8})(?:((?:[a-z]{2})|(?:[0-9]{3}))$
  • 朗、剧本、国家
^(?i)(?[a-z]{2,8})(?:([a-z]{4}))(?:([a-z]{2})|(?:[0-9]{3}))$
  • 语言、文字、国家、变体
以下代码:::)以下以下以下几点::::::::::)以下以下以下几点:::::::::::::::::::::::::::::::::::(((((:::[a-z[a-z]{{{{2.2,8.5.8})是(((())))((((((()))))),(,(,(,([a-z[a-z[a-z[a-z[3-z扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑)*)$ *此模式不提取单独的
子标签
——不要认为有用例可以逐个获取它们

  • 语言、脚本、国家、变体、扩展名
…太长太难看)
这些表格接受更符合规范的部分(例如正则表达式组)之间的
(下划线)

如果同时允许pass
-
(连字符),这在例如
java.util.Locale
中是允许的,这也不会使模式更漂亮。 为了达到这个目的,你可以用smth代替
-
,比如
(?:|-)
,但一般来说,我喜欢强调并接受人们使用它们


此外,它也更符合«IETF BCP 47,它由RFC 4647“语言标记的匹配”和RFC 5646“用于识别语言的标记”组成,只接受
(下划线)。

这里是
toString()
-ed表单的regexp,例如
java.util.Locale

在大多数情况下,你可能会与

  • 郎与国
^(?i)(?[a-z]{2,8})(?:((?:[a-z]{2})|(?:[0-9]{3}))$
  • 朗、剧本、国家
^(?i)(?[a-z]{2,8})(?:([a-z]{4}))(?:([a-z]{2})|(?:[0-9]{3}))$
  • 语言、文字、国家、变体
以下代码:::)以下以下以下几点::::::::::)以下以下以下几点:::::::::::::::::::::::::::::::::::(((((:::[a-z[a-z]{{{{2.2,8.5.8})是(((())))((((((()))))),(,(,(,([a-z[a-z[a-z[a-z[3-z扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑扑)*)$
*此模式不提取单独的
子标签
——不要认为有用例可以逐个获取它们

  • 语言、脚本、国家、变体、扩展名
…太长太难看)
这些表格接受更符合规范的部分(例如正则表达式组)之间的
(下划线)

如果同时允许pass
-
(连字符),这在例如
java.util.Locale
中是允许的,这也不会使模式更漂亮。 为了达到这个目的,你可以用smth代替
-
,比如
(?:|-)
,但一般来说,我喜欢强调并接受人们使用它们

此外,它也更符合«IETF BCP 47,其由RFC 4647“匹配