本文目錄一覽:
- 1、關於java中正則表達式的一些語句理解
- 2、求java中正則表達式驗證的寫法
- 3、java密碼正則表達式(可以是純數字,也可以是純字母,也可以是數字+字母,6-16 位)
- 4、JAVA 正則法則如有驗證年份
- 5、java正則表達式校驗 ip
關於java中正則表達式的一些語句理解
//下面是完整代碼,具體的分析都在代碼注釋里:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test6
{
public static void main(String[] args)
{
//正則表達式字元串:
// [] 內的數字表示取值可以是任意一個,
//\d 匹配一個數字字元。等價於[0-9]。
//\ 將下一個字元標記為一個特殊字元、或一個原義字元、或一個向後引用、或一個八進位轉義符。例如,「\\n」匹配\n。
//{n} n是一個非負整數。匹配確定的n次
String regex=”1[3458][01256]\\d{8}”;
String str=”14057539559″;
/*
Pattern類:
正則表達式的編譯表示形式。
指定為字元串的正則表達式必須首先被編譯為此類的實例。
然後,可將得到的模式用於創建 Matcher 對象,依照正則表達式,該對象可以與任意字元序列匹配。
執行匹配所涉及的所有狀態都駐留在匹配器中,所以多個匹配器可以共享同一模式。
compile方法:
static Pattern compile(String regex)
將給定的正則表達式編譯到模式中。
*/
Pattern pattern=Pattern.compile(regex);
/*
* Pattern的
matcher方法
根據要匹配的字元序列 ,創建匹配給定輸入與此模式的匹配器,然後返回此模式的新匹配器。
*/
Matcher matcher=pattern.matcher(str);
/*
* Matcher的
matches()方法
嘗試將整個區域與模式匹配。
當且僅當整個區域序列匹配此匹配器的模式時才返回 true。
*/
boolean bool=matcher.matches();
if (bool==true)
{
System.out.println(“是聯通號”);
}
else
{
System.out.println(“不是聯通號”);
}
}
/*
代碼如上:。我想問的是:
(1)Pattern pattern=Pattern.compile(regex); 這句話能不能幫我分析一下。
(2)Matcher matcher=pattern.matcher(str);分析一下這句話的作用和每一部的作用。
(3) boolean bool=matcher.matches();比較不需要傳入參數?
*/
}
求java中正則表達式驗證的寫法
String s=”蘇建安A(2014)0010716″;
boolean b = s.matches(“蘇建安[ABC][(|\\(][0-9]{4}[)|\\)][0-9]{7}”);
System.out.println(b);
java密碼正則表達式(可以是純數字,也可以是純字母,也可以是數字+字母,6-16 位)
正則表達式是一種描述字元串集合的方法,它是以字元串集中各字元串的共有特徵為依據的。正則表達式可以用於探索、編輯或者操作文本和數據。它超出了Java程序設計語言的標準語法,因此有必要去學習特定的語法來構建正則表達式。正則表達式的變化是複雜的,一旦你理解了他們是如何被構造的話,你就能解析或者構建任意的正則表達式了。
密碼校驗規則如下:
1.必須包含數字、字母、特殊字元三種
2.長度至少8位
3.不能包含3位及以上相同字元的重複(hhh123@jixxx)
4.不能包含3位及以上字元組合的重複(123q123c123)
5.不能包含3位以上的正序及逆序連續字元(123#wete#321)
6.不能包含空格、製表符、換頁符等空白字元
7.支持特殊字元範圍:^$./,;:’!@#%*|?+(){}[]
按照需求進行正則表達式拆解
規則18:
str.matches(“^.*[a-zA-Z]+.*$”) str.matches(“^.*[0-9]+.*$”)
str.matches(“^.*[/^/$/.//,;:’!@#%/*/|/?/+/(/)/[/]/{/}]+.*$”)
規則2:
str.matches(“^.{8,}$”)
規則3:
!str.matches(“^.*(.)\\1{2,}+.*$”)
規則4:
!str.matches(“^.*(.{3})(.*)\\1+.*$”)
規則57:
javaImpl:
first change str to char[]
then for Math.abs(cc[0] – cc[1]) == 1 (cc[0] – cc[1]) == (cc[1] – cc[2])
如果想去掉特殊字元的連續:
first str.split(“[^\\w]+”) as str1[]
then for str1[]
then for str1[i] javaImpl:
規則6:
!str.matches(“^.*[\\s]+.*$”)
JAVA 正則法則如有驗證年份
目前仍沒有人解決1、3、5、7、8、10、12月是31天的大月問題呀
(我本是1樓)如果用正則去驗證「數值」,會很捨近求遠,不是正則的強項。需要寫很多的「向後斷言」。效率會一般甚至很低。(目前我看到的上下樓的都是有漏洞的,沒法檢驗閏月和大小月)
我所不取。
我一直用的這個:
static public boolean isValidDate(
int year, int mon, int day,
short year_min,short year_max,
StringBuffer msg)
{
if(yearyear_min || yearyear_max)
{
msg.append(“年份必須在(“+
year_min+”~”+year_max+
“)之間,輸入值(“+year+”)無效\n”);
return false;
}else{//
switch(mon){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:{
if(day1 || day31){
msg.append(“日號必須在(1~31)之間,輸入值(“+day+”)無效\n”);
return false;
}
}break;
case 2:{
if(isLeapYear(year) day29){
msg.append(“閏年的閏二月日號必須在(1~29)之間,”+year+”是閏年,輸入值(“+day+”)無效\n”);
return false; }else if(day28){
msg.append(“非閏年的閏二月的日號必須在(1~28)之間,”+year+”不是閏年,輸入值(“+day+”)無效\n”);
return false;
}
}break;
case 4:case 6:case 9:case 11:{
if(day1 || day30){
msg.append(“日號必須在(1~30)之間,輸入值(“+day+”)無效\n”);
return false;
}
}break;
default:{
msg.append(“月份必須在(1~12)之間,輸入值(“+mon+”)無效\n”);
return false;
}
}
}
return true;
}
static public boolean isLeapYear(int year){
return (year%4==0 year%100!=0)|| year%400==0;
}
包好。
java正則表達式校驗 ip
你直接用matchs判斷就可以了,matcher是只要內部有能匹配上的就算滿足,不是判斷整體。
String rexp = “([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}”;
String addr = “11111.1.1.1”;
System.out.println(“1.1.1.1”.matches(rexp));
System.out.println(“11.1.1.1”.matches(rexp));
System.out.println(“111.1.1.1”.matches(rexp));
System.out.println(“11111.1.1.1”.matches(rexp));
true
true
true
false
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/193446.html