我想要一个正则表达式,它只会验证字符串是否有值。
我想出了这种模式:
pattern: '^$|([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?)'
逻辑是^ $ - 应匹配空字符串和|是OR。
所以在英文中是空字符串或其余的模式。
如果字符串为空,则表示正则表达式应该匹配时返回true,但事实并非如此。
我错过了什么?
答案 0 :(得分:0)
请尝试以下操作:
^(?:.*([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?).*)?$
答案 1 :(得分:0)
这取决于您使用的语言。 \A
匹配字符串的开头,\Z
匹配字符串的结尾。
(\A\Z)|([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?)
简短Java示例
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class HelloWorld{
public static void main(String []args){
Pattern pattern = Pattern.compile("(\\A\\Z)|([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?)");
String str1 = "";
String str2 = "s";
String str3 = "abcdababab3";
Matcher matcher = pattern.matcher(str1);
if(matcher.find()){
System.out.println("True:" + matcher.group());
}
matcher = pattern.matcher(str2);
if(matcher.find()){
System.out.println("True:" + matcher.group());
}
matcher = pattern.matcher(str3);
if(matcher.find()){
System.out.println("True:" + matcher.group());
}
}
}
输出:
True:
True:abcdababab3
它匹配空字符串和abcdabab3
,但不匹配s