正则简单介绍

前端之家收集整理的这篇文章主要介绍了正则简单介绍前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
正则简单介绍

什么是正则呢? 正则是一种文本处理的库。它是按照一定的规则处理字符串,得到我们想要的结果。现代社会很大一部分信息是以文本形式呈现的,掌握正则,你能玩转文本的世界,大有可为。 正则的本质: 按照一定规则处理文本的类库,其实我们也可以用你熟悉的语言去重写制定规则,写一个文本处理的类库。 正则类库 常用的正则库有pcre,posix等等。学会使用一种库,明白他的思想,你很容易学习另外一种库,他们语法差别不是太大。我们这里以preg为例, 正则是一种规则,遵循规则做事就能得到你想要的。 正则的学习 合适的学习工具让你事半功百: 推荐RegexTest 学习正则前得有一个观念: 正则的规则可以标识一切的文本。 正则的基础元字符: 基本字符 除换行符外的任意字符 \w 字母数字下划线或汉字 \s 空白符 \d 匹配数字 \b 开始或者结束 ^ 字符串开始 $ 字符串结束 量词 -范围 [] 括号中的任意字符 + 1个以上 * 任意个数的 ? 有或者没有 {m} m个 {m,n}m到n个 {m,}m以上个 量词表示数量

基本字符可以表示单个的所有的字符串。 我们可以说说字符串的组成,比如java这个字符串就是由四个字符 j a v a组成的 最直接的表示java 直接这么写就行。看到没这样就行 我们可以用基本字符表示为:\w\w\w\w 如果使用量词,\w+ 更清晰的表示\w{4}

元字符加上量词你就能描述所有的字符串啦。

我们再进一步。如果要从字符串中找到 javajavejevejavejbvbjsvs 中找到jave,java,jeve这三个字符串呢? 可以用到方括号了:j[ae]v[ae]

你可以选择方括号里面的任意一个字符串。 如果不想匹配java,只想匹配其他的类似的字符串:j[^a]v[aebs]

^标识否定的 例如数字为[\d] 非数字[^\d]

如果说[]标识或那么()表示且了,()别名叫分组 比如我们要找到j后面紧跟ave三个单词的字符j(ave)

特殊的情况加入字符串javajave[jevejave 含有[这个字符串我们应该如何表示呢? 没错这个时候就必须用上转义符号\,比如[在正则里面表示为[了。

量词里面又会分为贪婪,懒惰模式 *? +? ?? {n,m}? {n}?加上一个问号就成了懒惰模式,尽量少的匹配 javajavejevejavejbvbjsvs 比如 jav.下是整个串 jav.?加上问号后是javajavejevejave

掌握了上述的语法你就能够熟练的使用正则啦。 什么邮箱验证,什么电话号码验证,什么其他的都是浮云啦。

更进一步更多的规则 捕获 测试字符串:javajavejavajevejavejbvbjsvs (exp)一个括号代表一个分组,捕获文本到分组里面 正则(java)(.)(java) 都在分组里面 (? exp) 捕获的分组名称为<>里面的字符串 (java)(? . )(java) 给分组命名为ssss (?:exp)不捕获分组 (java)(?:.*)(java)不再捕获分组

反向引用 比如我要匹配javajavejavajevejavejbvbjsvs java与java中间的字符串 你可以java(.)java 你也可以(java)(.)\1 匹配第一个分组匹配到的文档 \n标识第n个分组

零宽断言 i'm sing while you're dancing (?=exp) 匹配exp前面的部分 以ing结尾的字符 \b\w+(?=ing\b) (?<=exp)exp匹配exp后面的位置 以s开头的字符(?<=s)\w+\b (?!exp) 匹配后面不能匹配exp的 \b((?!ing)\w)+\b (?<!exp)匹配前面不能匹配exp的 \b((?!you)\w)+\b

掌握上边一些特性依旧掌握了正则的百分之八十了。

此外还有正则表达式的常用模式了。 i 忽略大小写 m 多行匹配 s 点号通配模式 U 懒惰模式 D结尾限制模式 u 支持UTF-8转义表达

原文链接:https://www.f2er.com/regex/361880.html

猜你在找的正则表达式相关文章