如何使用正则表达式查找字符串中是否至少有一个字符?

8

示例:

  1. "1 name": 应该说明它有字符
  2. "10,000": 可以
  3. "na123me": 应该说明它有字符
  4. "na 123, 000": 应该说明它有字符

3
您的问题是什么是字母表?只包括字母字符吗? /[a-zA-Z]*/ - WhirlWind
2
请澄清您的问题。 - Femaref
你说的“查找字符串是否有字母”是什么意思?你想知道这个字符串中是否有一些字母字符吗? - goedson
1
请澄清,您想问的是一个字符串是否至少有一个字母字符? - BalusC
根据您的更新,那么像%、#、!、一些希伯来语/中文/日语等字符怎么办?您只想限制为数字吗?您需要一个有效且可解析的数字吗? - BalusC
4个回答

11
public class HasCharacters  {
    public static void main( String [] args ){
        if( args[0].matches(".*[a-zA-Z]+.*")){
            System.out.println( "Has characters ");
        } else {
            System.out.println("Ok");   
        }
    }
}

测试

$java HasCharacters "1 name" 
Has characters 
$java HasCharacters "10,000"
Ok
$java HasCharacters "na123me"
Has characters 
$java HasCharacters "na 123, 000" 
Has characters 

1
这个不起作用。Java正则表达式默认受到“^”和“$”的限制。你可以自己测试一下,输入“1name”。 - BalusC
它在第一个示例中失败了。 - Vishal

6
 public static void main(String[] args)

 {
     Pattern p = Pattern.compile("^([^a-zA-Z]*([a-zA-Z]+)[^a-zA-Z]*)+$");
     Matcher m = p.matcher("1 name");
     Matcher m1 = p.matcher("10,000");
     Matcher m2 = p.matcher("na123me");
     Matcher m3 = p.matcher("na 123, 000");
     Matcher m4 = p.matcher("13bbbb13jdfgjd43534 fkgdfkgjk34 rktekjg i54 ");

     if (m.matches())
         System.out.println(m.group(1));

     if (m1.matches())
         System.out.println(m1.group(1));

     if(m2.matches())
         System.out.println(m2.group(1));

     if(m3.matches())
         System.out.println(m3.group(1));

     if (m4.matches())
         System.out.println(m4.group(1));
 }

以上应该匹配大小写字母。如果正则表达式返回匹配结果,则字符串中包含字母。

结果

1个名字

na 123, 000

i54

不包含字母的语句不符合该表达式。


3
如果匹配成功,则该字符串中仅包含字母(A-Z)。 - Mark Byers
现在应该已经修复了。感谢您让我知道。 - npinti
以 '^.' 开头或以 '.$' 结尾的正则表达式写法较差。为什么不直接使用正则表达式 '[a-zA-Z]' 呢? - David M
@David:与PHP、Perl和其他语言不同,Java正则表达式隐式地^$限定。 - BalusC
1
@BalusC,不正确!matches()方法使用整个字符串,但find()方法不是。 - David M
显示剩余2条评论

5

0

使用此行您可以检查字符串是否仅包含由正则表达式(在本例中为a,b,c,...z和A,B,C,...Z)给出的字符:

boolean doesMatch = "your string".matches( "[a-zA-Z]*" );

2
该正则表达式将匹配任何至少包含一个字母字符的字符串。 - Kip
我认为它应该匹配仅有一个字母字符的任何字符串,而不仅仅是至少一个。难道它不需要一个星号吗? - Paul
这只测试字符串中是否只有一个字符。 - Vishal
带有星号,它也将匹配一个空字符串。 - mpez0
1
这个不起作用。Java正则表达式默认受到“^”和“$”的限制。你可以自己测试一下,输入“1name”。 - BalusC

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