Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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-z]*[A-z,-, ]*[A-z]* 要匹配以多个字母字符(a-z)开头,后跟多个连字符或空格,并以字母字符结尾的字符串,例如: Azasdas- - sa-as 但它不起作用。您不需要逗号,在字符范围内还需要指定[a-Za-z\-],因为a-z和a-z的ASCII不连续。您缺少了一些允许的空格,您的最后一个表达式需要解释hypen 你需要更接近这一点: ^([A-Za-z]*)-\s*([A-Za-z][A-Za-z -]*)([A-Za-z-]*)$ 这取

我试着用这个模式

^[A-z]*[A-z,-, ]*[A-z]* 
要匹配以多个字母字符(a-z)开头,后跟多个连字符或空格,并以字母字符结尾的字符串,例如:

Azasdas- - sa-as

但它不起作用。

您不需要逗号,在字符范围内还需要指定
[a-Za-z\-]
,因为a-z和a-z的ASCII不连续。您缺少了一些允许的空格,您的最后一个表达式需要解释hypen

你需要更接近这一点:

^([A-Za-z]*)-\s*([A-Za-z][A-Za-z -]*)([A-Za-z-]*)$
这取决于你到底想怎么分手。在不知道“块”背后的上下文的情况下,用连字符将其分开可能会更容易,也可能不会更容易

编辑

实际上,它更像:

^([A-Za-z]*)([- ]*)([A-Za-z-]*)$

这是一个单词,后跟任意空格和连字符,后跟可能包含连字符的单词。

您不需要逗号,在字符范围内还需要指定
[a-Za-z\-]
,因为a-z和a-z的ASCII不连续。您缺少了一些允许的空格,您的最后一个表达式需要解释hypen

你需要更接近这一点:

^([A-Za-z]*)-\s*([A-Za-z][A-Za-z -]*)([A-Za-z-]*)$
这取决于你到底想怎么分手。在不知道“块”背后的上下文的情况下,用连字符将其分开可能会更容易,也可能不会更容易

编辑

实际上,它更像:

^([A-Za-z]*)([- ]*)([A-Za-z-]*)$
这是一个单词,后跟任意空格和连字符,后跟可能包含连字符的单词。

不要使用“,”(逗号)

不要使用“,”(逗号)


试试
^[A-Za-z][A-Za-z-]*[A-Za-z]$

^
表示单词应以字母(A-Z或A-Z)开头,然后后跟任意数量的字母或连字符。然后以字母表结尾,字母表由
$
表示


此外,您不应该使用A-z,因为这将包括ASCII范围91到96之间的意外字符。请参见此

尝试
^[A-Za-z][A-Za-z-]*[A-Za-z]$

^
表示单词应以字母(A-Z或A-Z)开头,然后后跟任意数量的字母或连字符。然后以字母表结尾,字母表由
$
表示


此外,您不应该使用A-z,因为这将包括ASCII范围91到96之间的意外字符。参见此

当前接受的答案(
^[A-Za-z][A-Za-z-]*[A-Za-z]$
)将只匹配至少两个字符长的字符串——例如,它将匹配字符串
“AB”
,而不仅仅是
“A”
“B”
。将其与此正则表达式进行比较:

^[A-Za-z]+([-]+[A-Za-z]+)*$


通过将
[-]+
和第二个
[A-Za-z]+
组合在一起,我的意思是,如果有空格和/或连字符,它们后面必须有更多的字母。组中的
*
量词使其成为可选的,因此
“A”
将匹配,同时仍然满足字符串以字母开头和结尾的要求。

当前接受的答案(
^[A-Za-z][A-Za-z-]*[A-Za-z]$
)将只匹配长度至少为两个字符的字符串,例如,它将匹配字符串
“AB”
,而不仅仅是
“A”
“B”
。将其与此正则表达式进行比较:

^[A-Za-z]+([-]+[A-Za-z]+)*$


通过将
[-]+
和第二个
[A-Za-z]+
组合在一起,我的意思是,如果有空格和/或连字符,它们后面必须有更多的字母。组中的
*
量词使其成为可选的,因此
中的“A”
将匹配,同时仍然满足字符串以字母开头和结尾的要求。

问题中通常有一个
。很高兴您共享了一个不起作用的正则表达式,但这不是一个共享坏代码的地方。大多数人会问一个问题,为什么它坏了,然后“你能帮忙吗?”键入东西。@MarcB:OP总结了这个问题,并告诉我们他是如何试图解决它的;你还需要什么?“我做错了什么?”是暗含的,而“你能帮忙吗?”是浪费空间(IMO)。问题中通常有
。很高兴您共享了一个不起作用的正则表达式,但这不是一个共享坏代码的地方。大多数人会问一个问题,为什么它坏了,然后“你能帮忙吗?”键入东西。@MarcB:OP总结了这个问题,并告诉我们他是如何试图解决它的;你还需要什么?“我做错了什么?”是暗含的,而“你能帮忙吗?”是浪费空间(IMO)。@NullUserExceptionఠ_ఠ 难道第一个字不允许非字母字符吗?你就像一个忍者!(是的,我粘贴了错误的字符串--只是在编辑它。)如果将
-
放在字符类的末尾或开头,它将失去其特殊意义。@NullUserExceptionఠ_ఠ 是的,我只是想把它说得很清楚以避免任何混乱。它只是归结为个人品味,但我更喜欢尽量少用字符。特别是在Java中,它迫使您双重转义正则表达式字符串。@NullUserExceptionఠ_ఠ 难道第一个字不允许非字母字符吗?你就像一个忍者!(是的,我粘贴了错误的字符串--只是在编辑它。)如果将
-
放在字符类的末尾或开头,它将失去其特殊意义。@NullUserExceptionఠ_ఠ 是的,我只是想把它说得很清楚以避免任何混乱。它只是归结为个人品味,但我更喜欢尽量少用字符。特别是在Java中,它迫使您对正则表达式字符串进行双转义。这会遗漏允许使用空格的位置。@DaveNewton感谢:)对包含空格进行了必要的更改。这会遗漏允许使用空格的位置。@DaveNewton感谢:)对包含空格进行了必要的更改。