Java正则表达式,不允许正斜杠

时间:2016-01-25 19:36:46

标签: java regex

我必须创建一个正则表达式来验证字符串是否包含正斜杠。如果存在正斜杠,则验证失败。即使字符串为空,字符串也必须通过。

这是我到目前为止所做的:

"^[a-zA-Z0-9\\\\ ]*$"  

2 个答案:

答案 0 :(得分:3)

如果我正确理解了注释,那么表达式不需要反斜杠 - 你只需要确保没有正斜杠。在这种情况下,你可以简单地使用^[^/]*$你不需要任何类型的前瞻。

稍微解释一下这个表达式:这个表达式匹配字符串的开头(^),后跟零个或多个非斜杠字符([^/]*),后跟字符串结尾({{ 1}})。方括号通常表示您要匹配其中的任何字符,但在这种情况下,前导$会反转表达式的该部分,因此它将匹配任何不是斜杠的字符。 ^表示我们希望根据需要尝试匹配零次或多次以使模式生效。

答案 1 :(得分:2)

您可以使用否定前瞻来断言不能有任何正斜杠,看起来像(?!.*\/)。从那里,确保你找到至少一个反斜杠,或者什么都没找到(行尾):

^(?!.*\/)((?:.*\\.*)|$)

您可以看到它与here匹配。请注意,右侧列中有两个匹配项,一个用于空正则表达式,另一个用于包含反斜杠的行。

编辑:如果要求以确保字符串没有任何正斜杠,则正则表达式更容易。你只需从上面的正则表达式中看出负面预测。

^(?!.*\/).*$

您可以看到匹配here