正規表示式中的點.
(dot or period)可用來代表任意字元。
下面範例regex="^093."
是找出號碼開頭為"093x"的電話
String ph1 = new String("0932299311");
String ph2 = new String("0933884151");
String ph3 = new String("0935007726");
String ph4 = new String("0921000932");
String ph5 = new String("09320077260000");
String ph6 = new String("093Z");
String regex = "^093.";
Pattern p = Pattern.compile(regex);
System.out.println(p.matcher(ph1).find()); // true
System.out.println(p.matcher(ph2).find()); // true
System.out.println(p.matcher(ph3).find()); // true
System.out.println(p.matcher(ph4).find()); // false
System.out.println(p.matcher(ph5).find()); // true
System.out.println(p.matcher(ph6).find()); // true
^
符號不是緊接在方括弧[]
內,所以意思為從字串的開頭做匹配,因此ph4字串後含有"093"仍不符合條件。
因為沒有做字串長度的判斷,所以ph5和ph6的號碼長度即使不是正常手機號碼的長度(10碼)仍符合條件,結果為true。
因為.
代表任意字元,所以ph6的第四個字不是數字也符合條件。
菜鳥工程師肉豬-版權所有不得轉載
注意在方括弧[]
內.
就不代表任意字元了,而是代表"."這個字本身,觀察以下
String ph1 = new String("0932299311");
String ph2 = new String("0933884151");
String ph3 = new String("093.3AB6");
String regex = "^093[.]";
Pattern p = Pattern.compile(regex);
System.out.println(p.matcher(ph1).find()); // false
System.out.println(p.matcher(ph2).find()); // false
System.out.println(p.matcher(ph3).find()); // true
因為ph3的第四個字為".",所以才符合條件。
下面範例為條件符合日期格式yyyy/MM/dd
或yyyy.MM.dd
或yyyy-MM-dd
的字串為true
String ph1 = new String("1981.08.07");
String ph2 = new String("1981-08-07");
String ph3 = new String("1981/08/12");
String ph4 = new String("19810812");
String ph5 = new String("106/12/31");
String ph6 = new String("2017/8/17");
String regex = "^\\d{4}[./-]\\d{2}[./-]\\d{2}$";
Pattern p = Pattern.compile(regex);
System.out.println(p.matcher(ph1).find()); // true
System.out.println(p.matcher(ph2).find()); // true
System.out.println(p.matcher(ph3).find()); // true
System.out.println(p.matcher(ph4).find()); // false
System.out.println(p.matcher(ph5).find()); // false
System.out.println(p.matcher(ph6).find()); // false
^
意思為字串開頭必須符合後面的規則。\d
的意思是任意數值,意思等於[0-9]
,\
是Java的跳脫字元,所以要再加上一個\
。{4}
的意思是前個標記(\d
)向後判斷4個字
[./-]
的意思是要符合.
或/
或-
,因為.
在方括弧[]
內,.
的實字而非任意字元。
最後的
$
的意思是到字串的尾端必須符合前面的規則。
沒有留言:
張貼留言