正则表达式If-Then-Else条件

时间:2016-06-07 14:40:51

标签: regex

我有一个字段,用户可以在其中搜索某些内容。他们应该能够搜索^[0-9a-zA-Z*]$

但是不可能只搜索字符*(通配符)。必须至少有一个其他字母或数字。 a* or *a or 1* or *1有效。

因此,有效搜索必须至少有一个数字/字母不等*

我认为if / then / else条件应该可以实现。这是我的尝试!

"^(?(?=[*])([0-9a-zA-Z:\]{1,})|([0-9a-zA-Z:\*]*))$"
if character = *
then [0-9a-zA-Z:\]{1,} = user has to enter at least one (or more) characters of the group
else = [0-9a-zA-Z:\*]* = user has to enter 0 or more characters of the group

但它不起作用......

1 个答案:

答案 0 :(得分:1)

您可以使用

^[0-9a-zA-Z*]*[0-9a-zA-Z][0-9a-zA-Z*]*$

请参阅regex demo

此正则表达式将匹配零个或多个字母/数字/星号,然后是必填字母或数字,然后是零个或多个字母/数字/星号。

或者,您可以要求字符串至少包含1个字母或数字:

^(?=.*[0-9a-zA-Z])[0-9a-zA-Z*]+$

another demo^(?=.*[0-9a-zA-Z])正向前瞻将需要一个字母或数字,在零个或多个任何字符之后只有一个换行符。它也可以写成^(?=.*\p{Alnum})[\p{Alnum}*]+$(在Java中使用双重转义反斜杠)。

Java demo

String rx = "(?=.*\\p{Alnum})[\\p{Alnum}*]+";
System.out.println("****".matches(rx));       // FALSE
System.out.println("*a**".matches(rx));       // TRUE