使用正则表达式检查字符串是否以数字字符开头和结尾

10

我正在尝试:

String string = "123456";    
if(string.startsWith("[0-9]") && string.endsWith("[0-9]")){
    //code
}

if语句从未被执行。


5
是什么让你认为这是一个正则表达式参数? - Dave Newton
变量名在哪里? - Rohit Jain
1
这篇文章里是不是没有问题? - Akunosh
1
我们假设缺失的最后一个单词是:“为什么?” - arjacsoh
5个回答

26

不要使用正则表达式:

Character.isDigit(string.charAt(0)) && 
                              Character.isDigit(string.charAt(string.length()-1))
Character.isDigit()

1
我认为这是更快的方式。 - Paul Vargas
我同意,不需要正则表达式。 - dic19
@MattSmith 你确定是这一行吗?没有情况应该会导致 IllegalStateException。请尝试检查周围的代码。 - arshajii

9

String类中,方法startsWith()endsWith()只接受字符串,而不是正则表达式。


非常正确,但目前这更像是一条评论而不是答案。您会建议他们如何“...[检查]一个字符串是否以数字字符开头和结尾。”? - Leigh

4
你可以这样使用Stringmatches方法:
public static void main(String[] args) throws Exception {
    System.out.println("123456".matches("^\\d.*?\\d$"));
    System.out.println("123456A".matches("^\\d.*?\\d$"));
    System.out.println("A123456".matches("^\\d.*?\\d$"));
    System.out.println("A123456A".matches("^\\d.*?\\d$"));
}

输出:

true
false
false
false

谢谢您提供的解决方案,我想在JavaScript中使用相同的概念,但是当我对一个字符串使用^\\d.*?\\d$时,它不起作用。 对于字符串3rd,它应该返回false,而对于字符串33(空格),输出应该为true。 任何指导都将不胜感激。 - user12736831
谢谢你的解决方案,我想在JavaScript中使用相同的概念,但是当我对一个字符串使用^\\d.*?\\d$时,它不起作用。对于字符串3rd,它应该返回false,而对于字符串33(空格),输出应该是true。非常感谢任何指导。 - user12736831

3

您可以使用:

String string = "123test123";
if(string.matches("\\d.*\\d"))
{
    // ...
}

1
@ProgramFOX,使用matches()方法时实际上不需要锚点。 - arshajii

-1
请按照代码片段进行操作。
String variableString = "012testString";
Character.isDigit(string.charAt(0)) && variableString.Any(c => char.IsUpper(c));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接