我是正则表达式的新手并试图通过此声明。我试图做的是检查字符串中的第一个字符。
我想看到如果它以数字开头,则该语句将为真。我还想检查一下,如果第一个字符是"("那么我想检查下一个数字是否也是数字。
到目前为止,我已经:
if (str.matches("^[(?\d")){
return true;
但这似乎不起作用。 ^用于锚定开始,(?检查可选括号,然后检查它后面是否为数字。我怎么塞满了?
所以0800,(0800,(09,09)应该通过* 08,(* 0,AB,(AB,* AB)应该失败。
由于
答案 0 :(得分:2)
您需要删除左方括号并转义元字符。此外,matches()
告诉整个字符串是否与给定的正则表达式匹配。因此,您需要在之后添加令牌.*
以贪婪地匹配字符串中的每个字符。
if (str.matches("\\(?\\d.*")) { ... }
答案 1 :(得分:1)
这个正则表达式可以解决这个问题:
^\d.*|^\(\d.*
在Java中,转义反斜杠:
if (str.matches("^\\d.*|^\\(\\d.*"))