编程论坛's Archiver

THE 发表于 2008-4-30 17:01

有关正则表达式的问题

在用户名匹配时,我想用户名必须以大写字母开头,这样写:
if (!yonghuField.getText().toString().startsWith("[A-Z]"))
                JOptionPane.showMessageDialog(this, "用户名必须以大写字母开头!");
为什么不行?谢谢

freish 发表于 2008-5-3 22:55

当然不行了
用String的matches方法!

THE 发表于 2008-5-9 23:35

那怎么改,谢谢

freish 发表于 2008-5-10 00:55

[color=Red]import javax.swing.JOptionPane;
public class A{
        private String str;
        public A(String s){
                str = s;
        }
        public void p(){
                if(!str.matches("[A-Z][\\S]*"))//判断是否以大写字母开头,后接非空白字符
                        JOptionPane.showMessageDialog(null,"您的串不是以大些字母开头的");
        }
        public static void main(String args[]){
                A a = new A("B15");
                a.p();
        }
}[/color]


. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]


X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次


我想应该是这样的

[[it] 本帖最后由 freish 于 2008-5-10 09:16 编辑 [/it]]

freish 发表于 2008-5-10 00:57

如果要用startsWith也可以
从A到Z都判断一次

import javax.swing.JOptionPane;

public class A{
        private String str;
        private boolean b = false;
        public A(String n){
                str = n;
        }
        public void p(){
                for(char ch='A';ch<='Z';ch++){
                        if(str.startsWith(String.valueOf(ch))){
                                b = true;
                                break;
                        }
                }
                if(!b)
                        JOptionPane.showMessageDialog(null,"您输入的不是以大些字母开头的串");
        }
        public static void main(String args[]){
                A a = new A("asaf");
                a.p();
        }
}

[[it] 本帖最后由 freish 于 2008-5-10 09:15 编辑 [/it]]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.