正則表達(dá)式



以前遇到判斷UITextField里面的字符串的是否為數(shù)字形式耕蝉,就是傻乎乎的去判斷里面的內(nèi)容铐刘。操作如下:

  //判斷是否 為數(shù)字
  if ([self isPureInt:self.lengthTF.text] || [self isPureFloat:self.lengthTF.text]) {
      //要么是整數(shù)歧杏,要么是浮點(diǎn)數(shù)
      [self setShowInfomaton];
  }else{
      [SVProgressHUD showErrorWithStatus:NSLocaString(@"請(qǐng)輸入數(shù)字格式")];
  }


  //判斷是否為整型
  - (BOOL)isPureInt:(NSString*)string{
      NSScanner* scan = [NSScanner scannerWithString:string];
      int val;
      return [scan scanInt:&val] && [scan isAtEnd];
  }
  //判斷是否為浮點(diǎn)形
  - (BOOL)isPureFloat:(NSString*)string{
      NSScanner* scan = [NSScanner scannerWithString:string];
      float val;
      return[scan scanFloat:&val] && [scan isAtEnd];
  }


而使用正則表達(dá)式镰惦,則操作就簡(jiǎn)便了些。如下:

  //驗(yàn)證 數(shù)字
  static NSString * const Regex_Number = @"^((^0\\.\\d{0,2}$)|(^[1-9]+\\d*\\.\\d{0,2}$)|(^[1-9]\\d*$)|(^0$))?$";

  NSPredicate * predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",Regex_Number];
  if ([predicate evaluateWithObject:self.lengthTF.text]) {
      [self setShowInfomaton];
   }else{
       [SVProgressHUD showErrorWithStatus:NSLocaString(@"請(qǐng)輸入數(shù)字格式")];
   }

當(dāng)然支持判斷犬绒、驗(yàn)證的類型 還很多旺入!


正則表達(dá)式

是對(duì)字符串操作的一種邏輯公式。正則表達(dá)式可以檢測(cè)給定的字符串是否符合我們定義的邏輯凯力,也可以從字符串中獲取我們想要的特定部分茵瘾。

  • 看一個(gè)過(guò)濾(判斷是否為)純整數(shù)數(shù)字的例子

    - (BOOL)validateNumber:(NSString *)textString {
       NSString* numberStr = @"^[0-9]+$";
       NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",numberStr];
       return [numberPre evaluateWithObject:textString];
    }
    


    驗(yàn)證及控制臺(tái)輸出:

    NSString * compStr = @"iphone7";
    
    BOOL isTotallyNumber = [self validateNumber:compStr];
    NSLog(@"%d",isTotallyNumber);
    //    輸出BOOL值的方法
    NSLog(@"%@",isTotallyNumber?@"YES":@"NO");
    


    NSString * compStr = @"01234447";
    
    BOOL isTotallyNumber = [self validateNumber:compStr];
    NSLog(@"%d",isTotallyNumber);
    //    輸出BOOL值的方法
    NSLog(@"%@",isTotallyNumber?@"YES":@"NO");
    

    其中@"^[0-9]+$"就是一個(gè)正則表達(dá)式,它代表了字符串中只能包含“>=1”個(gè)“0-9”的數(shù)字急膀。



語(yǔ)法:

首先,特殊符號(hào)’^'和’$'龄捡。他們的作用是分別指出一個(gè)字符串的開(kāi)始和結(jié)束卓嫂。

“^one”:表示所有以”one”開(kāi)始的字符串(”one cat”,”one123″聘殖,·····)晨雳;
類似于:

    - (BOOL)hasPrefix:(NSString *)aString;



“a dog$”:表示所以以”a dog”結(jié)尾的字符串(”it is a dog”,·····)奸腺;
類似于:

    - (BOOL)hasSuffix:(NSString *)aString;

“^apple$”:表示開(kāi)始和結(jié)尾都是”apple”的字符串餐禁,這個(gè)是唯一的~;


“banana”:表示任何包含”banana”的字符串突照。
類似于 iOS8的新方法:

     - (BOOL)containsString:(NSString *)aString,搜索子串用的帮非。



再者
  ‘*’,’+'和’?’這三個(gè)符號(hào)讹蘑,表示一個(gè)或N個(gè)字符重復(fù)出現(xiàn)的次數(shù)末盔。它們分別表示“沒(méi)有或更多”([0,+∞]取整),“一次或更多”([1,+∞]取整)座慰,“沒(méi)有或一次”([0,1]取整)陨舱。


下面是幾個(gè)例子:
  “ab*”:表示一個(gè)字符串有一個(gè)a后面跟著零個(gè)若干個(gè)b(”a”, “ab”, “abbb”,……);
  “ab+”:表示一個(gè)字符串有一個(gè)a后面跟著至少一個(gè)b或者更多( “ab”, “abbb”,……)版仔;
  “ab?”:表示一個(gè)字符串有一個(gè)a后面跟著零個(gè)或者一個(gè)b( “a”, “ab”)游盲;
  “a?b+$”:表示在字符串的末尾有* 零個(gè)一個(gè)a* 跟著 * 一個(gè)幾個(gè)b* ( “b”, “ab”,“bb”,“abb”,……)。


  其中可以用 大括號(hào) 括起來(lái)( { } )蛮粮,表示一個(gè)重復(fù)的具體范圍益缎。
例如:
 “ab{4}”:表示一個(gè)字符串有一個(gè)a跟著4個(gè)b(“abbbb”);
 “ab{1,}”:表示一個(gè)字符串有一個(gè)a跟著至少1個(gè)b(“ab”,“abb”,“abbb”,……)然想;
 “ab{3,4}”:表示一個(gè)字符串有一個(gè)a跟著3到4個(gè)b(“abbb”,“abbbb”)莺奔。
  那么,“** * ”可以用{0又沾,}表示弊仪,“+”可以用{1熙卡,}表示杖刷,“?”可以用{0,1}**表示驳癌。
 ??注意??:可以沒(méi)有下限滑燃,但是不能沒(méi)有上限!例如“ab{,5}”是錯(cuò)誤的寫(xiě)法颓鲜。



“ | ”表示“或”操作:
  “a|b”:表示一個(gè)字符串里有”a”或者”b”表窘;
  “(a|bcd)ef”:表示“aef”或“bcdef”典予;
  “(a|b)*c”:表示一串“a”、“b”混合的字符串后面跟一個(gè)“c”乐严;


  方括號(hào)”[ ]“表示在括號(hào)內(nèi)的眾多字符中瘤袖,選擇1 - N個(gè)括號(hào)內(nèi)的符合語(yǔ)法的字符作為結(jié)果
例如:
   “[ab]”:表示一個(gè)字符串有一個(gè)”a”或”b”(相當(dāng)于”a|b”)昂验;
  “[a-d]”:表示一個(gè)字符串包含小寫(xiě)的'a''d'中的一個(gè)(相當(dāng)于”a|b|c|d”或者”[abcd]“)捂敌;
   “^[a-zA-Z]”:表示一個(gè)以字母開(kāi)頭的字符串;
   “[0-9]a”:表示a前有一位的數(shù)字既琴;
   “[a-zA-Z0-9]$”:表示一個(gè)字符串以一個(gè)字母或數(shù)字結(jié)束占婉。


“.”匹配除“\r\n”之外的任何單個(gè)字符:

“a.[a-z]”:表示一個(gè)字符串有一個(gè)”a”后面跟著一個(gè)任意字符和一個(gè)小寫(xiě)字母;

“^.{5}$”:表示任意1個(gè)長(zhǎng)度為5的字符串甫恩;


“\num” 其中num是一個(gè)正整數(shù)逆济。表示”\num”之前的字符出現(xiàn)相同個(gè)數(shù)。例如:
   “(.)\1”:表示兩個(gè)連續(xù)的相同字符磺箕。
   “10{1,2}” : 表示數(shù)字1后面跟著1或者2個(gè)0 (“10″,”100″)奖慌。
   “ 0{3,} ” 表示數(shù)字為至少3個(gè)連續(xù)的0 (“000”,“0000”松靡,······)升薯。


  在方括號(hào)里用‘^’表示不希望出現(xiàn)的字符,‘^’應(yīng)在方括號(hào)里的第一位击困。
  “@[^a-zA-Z]4@”表示兩個(gè)”@”中不應(yīng)該出現(xiàn)字母)涎劈。



常用的還有:
  “ \d ”匹配一個(gè)數(shù)字字符。等價(jià)于[0-9]阅茶。
  “ \D”匹配一個(gè)非數(shù)字字符蛛枚。等價(jià)于[^0-9]。
  “ \w ”匹配包括下劃線的任何單詞字符脸哀。等價(jià)于“[A-Za-z0-9_]”蹦浦。
  “ \W ”匹配任何非單詞字符。等價(jià)于“[^A-Za-z0-9_]”撞蜂。


iOS中書(shū)寫(xiě)正則表達(dá)式盲镶,碰到轉(zhuǎn)義字符,多加一個(gè)“\”,例如:
  全數(shù)字字符:@”^\d+$”





iOS中正則表達(dá)式

[1].正則表達(dá)式與NSPredicate(謂詞類)連用蝌诡。
//將正則表達(dá)式定義為 靜態(tài)字符串
//手機(jī)號(hào)
static NSString * const Regex_PhoneNum = @"^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$";
//郵箱
static NSString * const Regex_Email = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";

//身份證號(hào)
static NSString * const Regex_IDCardNumber = @"^(\\d{14}|\\d{17})(\\d|[xX])$";
//數(shù)字
static NSString * const Regex_Number = @"^((^0\\.\\d{0,2}$)|(^[1-9]+\\d*\\.\\d{0,2}$)|(^[1-9]\\d*$)|(^0$))?$";

//車牌號(hào)
static NSString * const Regex_CarNumber = @"^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4}[a-zA-Z_0-9_\u4e00-\u9fa5]$";
//車型
static NSString * const Regex_CarType = @"^[\u4E00-\u9FFF]+$";

//用戶名
static NSString * const Regex_UserName = @"^[A-Za-z0-9]{6,20}+$";
//密碼
static NSString * const Regex_Code = @"^[a-zA-Z0-9]{6,20}+$";
//昵稱
static NSString * const Regex_nickName = @"^[\u4e00-\u9fa5]{4,8}$";

為了簡(jiǎn)便演示溉贿,就直接使用main.storyboard拖控件了。

- (void)viewDidLoad {
    [super viewDidLoad];
    // 放入全局?jǐn)?shù)組中   
    _predicateArr = @[Regex_PhoneNum,Regex_Email,Regex_IDCardNumber,Regex_Number,Regex_CarNumber,Regex_CarNumber,Regex_CarType,Regex_UserName,Regex_Code,Regex_nickName];    
}


- (IBAction)buttonTouch:(UIButton *)sender { 
 // 謂詞NSPredicate
    NSPredicate * predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",_predicateArr[0]];
    if ([predicate evaluateWithObject:self.inputTF.text]) {
        NSLog(@"這是個(gè)手機(jī)號(hào)");
        self.textLB.text = @"這是個(gè)手機(jī)號(hào)";
    }else{
        NSLog(@"不是手機(jī)號(hào)");
        self.textLB.text = @"不是手機(jī)號(hào)"; 
    }

    //根據(jù)自己需要浦旱,更換 數(shù)組中對(duì)應(yīng)的正則表達(dá)式 進(jìn)行判斷操作 就好了
    //    NSPredicate * predicate1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",_predicateArr[1]];  //謂詞
//    if ([predicate1 evaluateWithObject:self.inputTF.text]) {
//        NSLog(@"這是個(gè)Email");
//        self.textLB.text = @"這是個(gè)Email";
//        return;
//    }else{
//        NSLog(@"不是Email");
//        self.textLB.text = @"不是Email";
//    }

//    NSPredicate * predicate2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",_predicateArr[2]];  //謂詞
//    if ([predicate2 evaluateWithObject:self.inputTF.text]) {
//        NSLog(@"這是身份證號(hào)");
//        self.textLB.text = @"這是身份證號(hào)";
//    }else{
//        NSLog(@"不是身份證號(hào)");
//        self.textLB.text = @"不是身份證號(hào)";
//    }
//
//    NSPredicate * predicate3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",_predicateArr[3]];  //謂詞
//    if ([predicate3 evaluateWithObject:self.inputTF.text]) {
//        NSLog(@"這是個(gè)數(shù)字");
//        self.textLB.text = @"這是個(gè)數(shù)字";
//    }else{
//        NSLog(@"不是數(shù)字");
//        self.textLB.text = @"不是數(shù)字";
//    }
//
//
//    NSPredicate * predicate4 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",_predicateArr[4]];  //謂詞
//    if ([predicate4 evaluateWithObject:self.inputTF.text]) {
//        NSLog(@"這是車牌號(hào)");
//        self.textLB.text = @"這是車牌號(hào)";
//    }else{
//        NSLog(@"不是車牌號(hào)");
//        self.textLB.text = @"不是車牌號(hào)";
//    }
//
//    NSPredicate * predicate5 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",_predicateArr[5]];  //謂詞
//    if ([predicate5 evaluateWithObject:self.inputTF.text]) {
//        NSLog(@"這是車型");
//        self.textLB.text = @"這是車型";
//    }else{
//        NSLog(@"不是車型");
//        self.textLB.text = @"不是車型";
//    }
//
//    NSPredicate * predicate6 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",_predicateArr[6]];  //謂詞
//    if ([predicate6 evaluateWithObject:self.inputTF.text]) {
//        NSLog(@"這是用戶名");
//        self.textLB.text = @"這是用戶名";
//    }else{
//        NSLog(@"不是用戶名");
//        self.textLB.text = @"不是用戶名";
//    }
//
//    NSPredicate * predicate7 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",_predicateArr[7]];  //謂詞
//    if ([predicate7 evaluateWithObject:self.inputTF.text]) {
//        NSLog(@"這是密碼");
//        self.textLB.text = @"這是密碼";
//    }else{
//        NSLog(@"不是密碼");
//        self.textLB.text = @"不是密碼";
//    }
//
//    NSPredicate * predicate8 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",_predicateArr[8]];  //謂詞
//    if ([predicate8 evaluateWithObject:self.inputTF.text]) {
//        NSLog(@"這是昵稱");
//        self.textLB.text = @"這是昵稱";
//    }else{
//        NSLog(@"不是昵稱");
//        self.textLB.text = @"不是昵稱";
//    }
}



效果:

使用正則表達(dá)式 不會(huì)像之前用字符串判斷“是否為數(shù)字?”時(shí)宇色,可能會(huì)忽略數(shù)值為小數(shù)的情況。正則表達(dá)式 可以保證 格式 完全正確!P洹例隆!
?我們只需要在需要判斷的地方進(jìn)行相應(yīng)處理就好了。



[2].使用NSString方法

[ rangeOfString: options: ];”方法 會(huì)返回一個(gè)NSRange抢蚀,用來(lái)接收 匹配的范圍镀层。
如果匹配不到結(jié)果,則返回一個(gè)NSIntegerMax(最大值)皿曲,即:NSNotFound鹿响。
#define NSIntegerMax LONG_MAX // 有符號(hào)長(zhǎng)整形最大值
因此可以用來(lái)判斷用戶輸入的內(nèi)容是否符合規(guī)則。


NSString *searchText = @"rangeOfString62323";
NSRange range = [searchText rangeOfString:@"^[0-9]+$" options:NSRegularExpressionSearch];
// "^[0-9]+$" : 表示字符串中 只能包含至少1個(gè) 0-9的數(shù)字

if (range.location != NSNotFound) {
    NSLog(@"range :%@", [searchText substringWithRange:range]);
    NSLog(@"位置:%lu  長(zhǎng)度:%lu",(unsigned long)range.location,range.length);
}

效果:“range.location”值 是 最大值谷饿,不滿足if語(yǔ)句的條件惶我,不進(jìn)入判斷語(yǔ)句!

打斷點(diǎn) 查看“range.location”值 </br>結(jié)果 不滿足條件




把上面

NSString *searchText = @"rangeOfString62323";


把searchText字符串的值換成數(shù)字形式:

NSString *searchText = @"13112345678";


控制臺(tái)打印結(jié)果:

打印結(jié)果





[3].正則表達(dá)式類(NSRegularExpression)

【3.1】獲取單條字符串

//用正則表達(dá)式截取字符串
NSString * compStr = @"http://www.reibang.com/users/0c0805f8de58/latest_articles";
NSError * error;
// 創(chuàng)建NSRegularExpression對(duì)象,并為其指定正則表達(dá)式
NSRegularExpression * regex = [NSRegularExpression regularExpressionWithPattern:@"[^an]*\\m" options:0 error:&error];
//@"[^X1 起始位置[不包含])]*\\X2 結(jié)束位置[包含])" 
if (!error) {
    // 獲取 特定字符串的范圍
    NSTextCheckingResult * match = [regex firstMatchInString:compStr  options:0 range:NSMakeRange(0, [compStr length])];
    if (match) { //能匹配上
        // 截獲特定的字符串
        NSString * result = [compStr substringWithRange:match.range];
        NSLog(@"%@",result);//結(jié)果:“shu.com”
    }
} else {
    // 如果有錯(cuò)誤博投,打印錯(cuò)誤
    NSLog(@"error - %@", error);
}

控制臺(tái)打印結(jié)果:

控制臺(tái)打印結(jié)果

從字符串里面檢索出的是以“an”開(kāi)頭“m”結(jié)尾的區(qū)間字符串绸贡,并且最終檢索出來(lái)的字符串的結(jié)尾包括了“m”,故而最終輸出結(jié)果為“shu.com”毅哗。




【3.2】獲取多條字符串
當(dāng)一個(gè)字符串里面有多個(gè)符合特定規(guī)則的字符時(shí)听怕,我們可分別獲取到符合特定規(guī)則的字符:

    NSString * regex = @"\\_\\d*\\."; 
    //已“_”開(kāi)頭,“.”結(jié)尾 (都包含)        且取整數(shù)部分

    NSString * compStr = @"_233423._dsakl3223.122_2abcl23.dfd_3242.34.322_";
    NSError * error;
    NSRegularExpression * regularEx = [NSRegularExpression regularExpressionWithPattern:regex options:NSRegularExpressionCaseInsensitive error:&error];
    // 對(duì)compStr字符串進(jìn)行匹配 
    NSArray * matchStr_Arr = [regularEx matchesInString:compStr options:0 range:NSMakeRange(0, compStr.length)];
    // 遍歷匹配到的每一條記錄
    for (NSTextCheckingResult * match in matchStr_Arr) {
      NSRange range = [match range];
      NSString * elementStr = [compStr substringWithRange:range];
      NSLog(@"%@", elementStr);
    }

從指定字符串中獲取以“-”開(kāi)頭以“.”結(jié)尾的整型字符虑绵,由于它可能含有多個(gè)符合其規(guī)則的字符串尿瞭。故而需要把它們遍歷出來(lái)。




正則表達(dá)式 大匯總

以下正則表達(dá)式來(lái)自 百度百科:

1.驗(yàn)證用戶名和密碼:”^[a-zA-Z]\w{5,15}$”
2.驗(yàn)證電話號(hào)碼:(”^(\\d{3,4}-)\\d{7,8}$”)
eg:021-68686868  0511-6868686翅睛;

3.驗(yàn)證手機(jī)號(hào)碼:”^1[3|4|5|7|8][0-9]\\d{8}$”声搁;
4.驗(yàn)證身份證號(hào)(15位或18位數(shù)字):”\\d{14}[[0-9],0-9xX]”;

5.驗(yàn)證Email地址:(“^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\.\\w+([-.]\\w+)*$”)捕发;

6.只能輸入由數(shù)字和26個(gè)英文字母組成的字符串:(“^[A-Za-z0-9]+$”) ;

7.整數(shù)或者小數(shù):^[0-9]+([.]{0,1}[0-9]+){0,1}$
8.只能輸入數(shù)字:”^[0-9]*$”疏旨。
9.只能輸入n位的數(shù)字:”^\\d{n}$”。
10.只能輸入至少n位的數(shù)字:”^\\d{n,}$”扎酷。
11.只能輸入m~n位的數(shù)字:”^\\d{m,n}$”檐涝。
12.只能輸入零和非零開(kāi)頭的數(shù)字:”^(0|[1-9][0-9]*)$”。
13.只能輸入有兩位小數(shù)的正實(shí)數(shù):”^[0-9]+(.[0-9]{2})?$”法挨。
14.只能輸入有1~3位小數(shù)的正實(shí)數(shù):”^[0-9]+(\.[0-9]{1,3})?$”谁榜。
15.只能輸入非零的正整數(shù):”^\+?[1-9][0-9]*$”。
16.只能輸入非零的負(fù)整數(shù):”^\-[1-9][]0-9″*$凡纳。

17.只能輸入長(zhǎng)度為3的字符:”^.{3}$”窃植。

18.只能輸入由26個(gè)英文字母組成的字符串:”^[A-Za-z]+$”。
19.只能輸入由26個(gè)大寫(xiě)英文字母組成的字符串:”^[A-Z]+$”惫企。
20.只能輸入由26個(gè)小寫(xiě)英文字母組成的字符串:”^[a-z]+$”撕瞧。

21.驗(yàn)證是否含有^%&’,;=?$\”等字符:”[^%&',;=?$\x22]+”。

22.只能輸入漢字:”^[\u4e00-\u9fa5]{0,}$”狞尔。

23.驗(yàn)證URL:”^http://([\\w-]+\.)+[\\w-]+(/[\\w-./?%&=]*)?$”丛版。

24.驗(yàn)證一年的12個(gè)月:”^(0?[1-9]|1[0-2])$”正確格式為:”01″~”09″和”10″~”12″。
25.驗(yàn)證一個(gè)月的31天:”^((0?[1-9])|((1|2)[0-9])|30|31)$”正確格式為偏序;”01″~”09″页畦、”10″~”29″和“30”~“31”。
26.獲取日期正則表達(dá)式:\\d{4}[年|\-|\.]\\d{\1-\12}[月|\-|\.]\\d{\1-\31}日?
評(píng)注:可用來(lái)匹配大多數(shù)年月日信息研儒。
                      
 27.匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]
評(píng)注:可以用來(lái)計(jì)算字符串的長(zhǎng)度(一個(gè)雙字節(jié)字符長(zhǎng)度計(jì)2豫缨,ASCII字符計(jì)1)
                          
28.匹配空白行的正則表達(dá)式:\n\s*\r
評(píng)注:可以用來(lái)刪除空白行
                            
29.匹配HTML標(biāo)記的正則表達(dá)式:<(\S*?)[^>]*>.*?</>|<.*? />
評(píng)注:網(wǎng)上流傳的版本太糟糕,上面這個(gè)也僅僅能匹配部分端朵,對(duì)于復(fù)雜的嵌套標(biāo)記依舊無(wú)能為力
                           
30.匹配首尾空白字符的正則表達(dá)式:^\s*|\s*$
評(píng)注:可以用來(lái)刪除行首行尾的空白字符(包括空格好芭、制表符、換頁(yè)符等等)冲呢,非常有用的表達(dá)式
                          
31.匹配網(wǎng)址URL的正則表達(dá)式:[a-zA-z]+://[^\s]*
評(píng)注:網(wǎng)上流傳的版本功能很有限舍败,上面這個(gè)基本可以滿足需求
                          
32.匹配帳號(hào)是否合法(字母開(kāi)頭,允許5-16字節(jié)敬拓,允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
評(píng)注:表單驗(yàn)證時(shí)很實(shí)用
                        
33.匹配騰訊QQ號(hào):[1-9][0-9]\{4,\}
評(píng)注:騰訊QQ號(hào)從10 000 開(kāi)始
                          
34.匹配中國(guó)郵政編碼:[1-9]\\d{5}(?!\d)
評(píng)注:中國(guó)郵政編碼為6位數(shù)字
                            
35.匹配ip地址:((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)邻薯。




大部分內(nèi)容都是自己使用過(guò)的,還有些使用乘凸,就不一一詳述了~~~~

如有紕漏厕诡,敬請(qǐng)指出!
















goyohol's essay

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末营勤,一起剝皮案震驚了整個(gè)濱河市灵嫌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌葛作,老刑警劉巖醒第,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異进鸠,居然都是意外死亡稠曼,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)客年,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)霞幅,“玉大人,你說(shuō)我怎么就攤上這事量瓜∷究遥” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵绍傲,是天一觀的道長(zhǎng)扔傅。 經(jīng)常有香客問(wèn)我耍共,道長(zhǎng),這世上最難降的妖魔是什么猎塞? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任试读,我火速辦了婚禮,結(jié)果婚禮上荠耽,老公的妹妹穿的比我還像新娘钩骇。我一直安慰自己,他們只是感情好铝量,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布倘屹。 她就那樣靜靜地躺著,像睡著了一般慢叨。 火紅的嫁衣襯著肌膚如雪纽匙。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天拍谐,我揣著相機(jī)與錄音哄辣,去河邊找鬼。 笑死赠尾,一個(gè)胖子當(dāng)著我的面吹牛力穗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播气嫁,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼当窗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了寸宵?” 一聲冷哼從身側(cè)響起崖面,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎梯影,沒(méi)想到半個(gè)月后巫员,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甲棍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年简识,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片感猛。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡七扰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出陪白,到底是詐尸還是另有隱情颈走,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布咱士,位于F島的核電站立由,受9級(jí)特大地震影響轧钓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锐膜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一毕箍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧枣耀,春花似錦霉晕、人聲如沸庭再。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拄轻。三九已至颅围,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恨搓,已是汗流浹背院促。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斧抱,地道東北人常拓。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像辉浦,于是被迫代替她去往敵國(guó)和親弄抬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容