我正在尝试在java中编写正则表达式来匹配可以选择包含*的字母数字字符串。但如果它包含 *,那么它必须位于该字符串的末尾。只能包含一个*
以下输入应返回true
abcd
abcd*
*
如下所示,输入应返回 false
,因为它包含不在该字符串末尾的 *
abc*d
abcd**
我尝试编写如下所示的java程序,但它不起作用
public static void main(String[] a){
String pattern = "[a-zA-Z0-9]+[\\*]$";
String test = "abcd*";
System.out.println(test.matches(pattern));
}
对于 abcd*
返回 true
,但对于 abcd
和 *
则不返回
请告诉我如何修复此正则表达式。谢谢
最佳答案
您必须使用 ? 来指定尾随星号是可选的。
[a-zA-Z0-9]*[*]?
关于Java以*结尾的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52285478/