美文网首页
iOS 正则表达式

iOS 正则表达式

作者: KillSimon | 来源:发表于2016-06-14 16:18 被阅读0次

    Regular Expression
    这是英文的表达,其本身是描述或匹配符合某个句法规则的字符串。至于为啥翻译成正则,表示鬼知道呢。正确规则?

    一个正则表达式通常被称为一个pattern(模式)。
    一个正则表达式通常有如下的结构:
    选择
    操作符: |

    示例:
    gray|grey 表示匹配gray或grey

    数量限定
    操作符: + ? *

    示例:
    +表示其前面的字符至少为一个。
    goo+gle可以匹配 google, google,gooooooole等。
    ?表示其前面的字符至多为1个。
    colou?r可以匹配 color和colour。
    表示其前面的字符可以是n个,n非负数。
    0
    *42可以匹配 42,042,0042,00042等

    范围
    操作符()

    示例:
    (grand)?father可以匹配grandfather或father。
    ps:你不会现在就把?操作符的含义给忘记了吧。

    基本的规则已经介绍了,剩下的语法规则请google 正则表达式全集。
    篇幅所限,没有贴过来,请不要恨我。

    好了终于可以说说在iOS中怎么应用正则表达式了。
    iOS中提供了NSPredicate类来使用正则表达式。

    NSString* regex = @"blahblah";
    NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    [predicate evaluateWithObject:str];

    举个栗子吧,我们以新浪邮箱的注册标准来写一个正则表达式。


    9AE87C2D-E358-4CAC-B6EF-52EBB9C5997A.png

    NSString* regex = @"^(?!)(?!.*$)\w{4,16}@sina.com";
    解释:
    ^表示匹配字符串的开始。$表示字符串的结束位置。
    ?!表示在任何不匹配字符的地方开始查找字符串。
    .表示除\n以外的任意一个字符。表示任意个数。(你不会又忘了吧)。
    ?!.
    $ 和之前的?!就排除了收尾为下划线的情况。
    \w表示字母数字和下划线,等价于[a-zA-Z0-9_]。
    {4,16}表示字符的个数4-16位。

    要吐学了么?那继续琢磨正则表达式字符全集吧!

    相关文章

      网友评论

          本文标题:iOS 正则表达式

          本文链接:https://www.haomeiwen.com/subject/sbpedttx.html