Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用正则表达式查找字符串是否至少有一个字符?_Java_Regex - Fatal编程技术网

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

Java 如何使用正则表达式查找字符串是否至少有一个字符?,java,regex,Java,Regex,示例: “1名称”:应该说它有字符 “10000”:好的 “na123me”:应该说它有字符 “NA123000”:应该说它有字符 通过这一行,您可以检查字符串是否只包含正则表达式给定的字符(在本例中为a、b、c、…z和a、b、c、…z): 上述内容应与大写和小写字母匹配。如果正则表达式返回匹配项,则字符串中有一个字母 结果 1名 我 北美123000 i54 不包含字母的语句与表达式不匹配 public class HasCharacters { public static void

示例:

  • “1名称”:应该说它有字符
  • “10000”:好的
  • “na123me”:应该说它有字符
  • “NA123000”:应该说它有字符

  • 通过这一行,您可以检查字符串是否只包含正则表达式给定的字符(在本例中为a、b、c、…z和a、b、c、…z):

    上述内容应与大写和小写字母匹配。如果正则表达式返回匹配项,则字符串中有一个字母

    结果

    1名

    北美123000

    i54

    不包含字母的语句与表达式不匹配

    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");   
            }
        }
    }
    
    试验


    所需的正则表达式是
    [a-zA-Z]
    ,但需要使用
    find()
    方法

    此页面将允许您根据输入测试正则表达式


    字母表是什么意思?只有字母字符/[a-zA-Z]*/请澄清您的问题。“查找字符串是否有字母”是什么意思?您想知道字符串是否有字母字符吗?为了澄清,您想询问字符串是否至少有一个字母字符?根据您的更新,像%、#、!、这样的字符如何!,一些希伯来语/汉语/日语等?你想只限制数字吗?你想要一个有效且可解析的数字吗?正则表达式将匹配任何至少有一个字母字符的字符串。我认为它将匹配任何正好有一个字母字符的字符串,而不仅仅是至少有一个字母字符的字符串。它不需要星号吗?这只测试字符串中是否有一个带星号的字符,它也将匹配空字符串。这不起作用。Java正则表达式默认由
    ^
    $
    限定。用
    1name
    自己测试。如果匹配,字符串中只有字母(A-Z)。现在应该修复。谢谢你让我知道。以“^.*”开头或以“.*$”结尾的正则表达式写得很糟糕。为什么不直接使用正则表达式“[a-zA-Z]”?@David:与PHP、Perl和其他语言不同,Java正则表达式隐式地由
    ^
    $
    @BalusC限定,不正确!
    matches()
    方法使用整个字符串,但是
    find()
    方法不使用。这不起作用。Java正则表达式默认由
    ^
    $
    限定。用
    1name
    自己测试。第一个示例失败
     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));
     }
    
    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