正则表达式

在这里插入图片描述

一、正则初体验

正则表达式是特殊的字符序列,利用事先定义好的特定字符以及他们的组合组成了一个规则,然后检查一个字符串是否与这种规则匹配来实现对字符的过滤或匹配。

在这里插入图片描述


比如我们的QQ登录页面,我们需要校验扣扣号码是否正确,我们规定QQ号 6 - 15位,并且全部为数字。
我们先用我们之前所学习的知识进行校验。

public static void main(String[] args) {
        //需求: 检验一个QQ号是否正确
        System.out.println(checkQQ("1054645664"));
        System.out.println(checkQQ("sad1245"));
        System.out.println(checkQQ(".,45545"));
    }
    public static boolean checkQQ(String qq) {
        //判断长度是否合法
        if(qq == null || qq.length() < 6 || qq.length() > 15) {
            return false;
        }
        //判断是否全部为数字
        for (int i = 0; i < qq.length(); i++) {
            char ch = qq.charAt(i);
            if(ch < '0' || ch > '9') {
                return false;
            }
        }
        return true;
    }

在这里插入图片描述


我们再来感受一下正则表达式是怎么判断的。

public static void main(String[] args) {
        //需求: 检验一个QQ号是否正确
        System.out.println(checkQQ1("1054645664"));
        System.out.println(checkQQ1("sad1245"));
        System.out.println(checkQQ1(".,45545"));
    }
    public static boolean checkQQ1(String qq) {
        return qq != null && qq.matches("\\d{6,20}");
    }

在这里插入图片描述


看到这里我们就能感受到正则表达式的作用了,正则表达式是字符串处理的有力工具。

二、匹配规则

字符类(默认匹配一个字符)

正则表达式 作用
[abc] 只能是a,b,c
[^abc] 除了a,c之外的任何字符
[a-zA-Z] a - z,A - Z(范围)
[a-d[m-p]] a到d,或m到p]
[a-z&&[def]] d,e或者f
[a-z&&[^bc]] a到z,除了b,c
[a-z&&[^m-p]] a到z,除了m到p

预定义字符类(默认匹配一个字符)

正则表达式 作用
. 任何字符
\d 一个数字
\D 非数字
\s 一个空白字符(\t\n\x0B\f\r)
\S 非空白字符
\w [a-zA-Z_0-9]英文,数字,下划线
\W [^\w]非英文,数字下划线

量词(匹配多字符)

正则表达式 作用
X? 一次或根本不
X* 零次或多次
X+ 一次或多次
X{n} 刚好n次
X{n,} 至少n次
X{n,m} 至少n,不超过m

我们在使用时,往往都是上面三种一起使用的。
我们字符串对象为我们提供了一个匹配正则表达式规则的API

public boolean matches(String regex);

在这里插入图片描述


如果匹配正则表达式返回true,否则返回false.
我们现在试着用正则表达式来校验一下密码是否正确,密码必须是数字,字母,下划线,8-16位。

public static void main(String[] args) {
        System.out.println("sadasd44".matches("\\w{8,16}"));//正确的密码
        System.out.println("221244".matches("\\w{8,16}"));//位数不够
        System.out.println("s,asdasd44".matches("\\w{8,16}"));//非法字符
    }

在这里插入图片描述


在这里插入图片描述


我们刚才在学习正则表达式的时候,我们表示数字,字母下划线的时候是用\w表示的,为什么我们在书写的时候用的是\w?
因为我们java种\是个很特殊的字符,我们先不加试试看

在这里插入图片描述


报了一个字符串种存在非法转义字符,我们\w,的目的是将\转义为一个真正意义上的.

那如果我们的密码校验规则现在只允许出现数字字母,我们该怎么校验呢?因为\w是包含下划线的,我们先使用另一种方法。

public static void main(String[] args) {
        System.out.println("asdas244".matches("[a-zA-Z0-9]{8,16}"));
        System.out.println("as__s244".matches("[a-zA-Z0-9]{8,16}"));
    }

在这里插入图片描述


那我们要想用\w,我们可以去除_这个字符

public static void main(String[] args) {
        System.out.println("asdas244".matches("\\w&&^_{8,16}"));
        System.out.println("as__s244".matches("\\w&&^_{8,16}"));
    }

在这里插入图片描述


我们可以发现,我们和上面得到的结果不一致,既然出错了,肯定是我们的使用方式不对。

在这里插入图片描述


我们可以发现,在使用&&非操作时,需要把非括号括起来

public static void main(String[] args) {
        System.out.println("asdas244".matches("[\\w&&[^_]]{8,16}"));
        System.out.println("as__s244".matches("[\\w&&[^_]]{8,16}"));
    }

在这里插入图片描述


当我们改正后,达到了预期的效果。

三、字符串方法的使用

方法名 说明
replaceAll(String s,String news) 按照正则表达式进行替换
spilt(String s) 按照正则表达式进行分割,返回字符串数组
public static void main(String[] args) {
        String names = "张三asdasd李四142王五";
        String[] arr = names.split("\\w+");
        for (String s : arr) {
            System.out.print(s+" ");
        }
    }

在这里插入图片描述


之前我们学过一个替换空格的问题。

public static void main(String[] args) {
        String s = "a    b  c   d";
        String[] s1 = s.split(" ");
        for (String s2 : s1) {
            System.out.print(s2+" ");
        }
    }

在这里插入图片描述


我们可以发现我们分割空格的话,并没有达到我们预期的效果,这里我们可以使用正则表达式的方式进行分割。

public static void main(String[] args) {
        String s = "a    b  c   d";
        String[] s1 = s.split("\\s+");
        for (String s2 : s1) {
            System.out.print(s2+" ");
        }
    }

在这里插入图片描述

public static void main(String[] args) {
        String names = "张三asdasd李四142王五";
        String s = names.replaceAll("\\w+", " ");
        System.out.println(s);
    }

在这里插入图片描述

原文地址:https://buhuisuanfa.blog.csdn.net" target="_blank" rel="noopener" title="熬夜磕代码丶">熬夜磕代码丶</a> <img class="article-time-img article-heard-img" src="https://csdnimg.cn/release/blogv2/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


jquery.validate使用攻略(表单校验) 目录 jquery.validate使用攻略1 第一章&#160;jquery.validate使用攻略1 第二章&#160;jQuery.validate.js API7 Custom selectors7 Utilities8 Validato
/\s+/g和/\s/g的区别 正则表达式/\s+/g和/\s/g,目的均是找出目标字符串中的所有空白字符,但两者到底有什么区别呢? 我们先来看下面一个例子: let name = &#39;ye wen jun&#39;;let ans = name.replace(/\s/g, &#39;&#3
自整理几个jquery.Validate验证正则: 1. 只能输入数字和字母 /^[0-9a-zA-Z]*$/g jQuery.validator.addMethod(&quot;letters&quot;, function (value, element) { return this.optio
this.optional(element)的用法 this.optional(element)是jquery.validator.js表单验证框架中的一个函数,用于表单控件的值不为空时才触发验证。 简单来说,就是当表单控件值为空的时候不会进行表单校验,此函数会返回true,表示校验通过,当表单控件
jQuery.validate 表单动态验证 实际上jQuery.validate提供了动态校验的方法。而动态拼JSON串的方式是不支持动态校验的。牺牲jQuery.validate的性能优化可以实现(jQuery.validate的性能优化见图1.2 jQuery.validate源码 )。 也可
自定义验证之这能输入数字(包括小数 负数 ) &lt;script type=&quot;text/javascript&quot;&gt; function onlyNumber(obj){ //得到第一个字符是否为负号 var t = obj.value.charAt(0); //先把非数字的都
// 引入了外部的验证规则 import { validateAccountNumber } from &quot;@/utils/validate&quot;; validator.js /*是否合法IP地址*/ export function validateIP(rule, value,cal
VUE开发--表单验证(六十三) 一、常用验证方式 vue 中表单字段验证的写法和方式有多种,常用的验证方式有3种: data 中验证 表单内容: &lt;!-- 表单 --&gt; &lt;el-form ref=&quot;rulesForm&quot; :rules=&quot;formRul
正则表达式 座机的: 例子: 座机有效写法: 0316-8418331 (010)-67433539 (010)67433539 010-67433539 (0316)-8418331 (0316)8418331 正则表达式写法 0\d{2,3}-\d{7,8}|\(?0\d{2,3}[)-]?\d
var reg = /^0\.[1-9]{0,2}$/;var linka = 0.1;console.log (reg.test (linka)); 0到1两位小数正则 ^(0\.(0[1-9]|[1-9]{1,2}|[1-9]0)$)|^1$ 不含0、0.0、0.00 // 验证是否是[1-10
input最大长度限制问题 &lt;input type=&quot;text&quot; maxlength=&quot;5&quot; /&gt; //可以 &lt;input type=&quot;number&quot; maxlength=&quot;5&quot; /&gt; //没有效
js输入验证是否为空、是否为null、是否都是空格 目录 1.截头去尾 trim 2.截头去尾 会去掉开始和结束的空格,类似于trim 3.会去掉所有的空格,包括开始,结束,中间 1.截头去尾 trim str=str.trim(); // 强烈推荐 最常用、最实用 or $.trim(str);
正则表达式语法大全 字符串.match(正则):返回符合的字符串,若不满足返回null 字符串.search(正则):返回搜索到的位置,若非一个字符,则返回第一个字母的下标,若不匹配则返回-1 字符串.replace(正则,新的字符串):找到符合正则的内容并替换 正则.test(字符串):在字符串中
正整数正则表达式正数的正则表达式(包括0,小数保留两位): ^((0{1}.\d{1,2})|([1-9]\d.{1}\d{1,2})|([1-9]+\d)|0)$正数的正则表达式(不包括0,小数保留两位): ^((0{1}.\d{1,2})|([1-9]\d.{1}\d{1,2})|([1-9]+
JS 正则验证 test() /*用途:检查输入手机号码是否正确输入:s:字符串返回:如果通过验证返回true,否则返回false /function checkMobile(s){var regu =/[1][3][0-9]{9}$/;var re = new RegExp(regu);if (r
请输入保留两位小数的销售价的正则: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/ 1.只能输入英文 &lt;input type=&quot;text&quot; onkeyup=&quot;value
判断价格的正则表达式 价格的正则表达式 /(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/; 1 解析:价格符合两种格式 ^ [1-9]\d*(.\d{1,2})?$ : 1-9 开头,后跟是 0-9,可以跟小数点,但小数点后要带上 1-2 位小数,类似 2,2
文章浏览阅读106次。这篇文章主要介绍了最实用的正则表达式整理,比如校验邮箱的正则,号码相关,数字相关等等,本文给大家列举的比较多,需要的朋友可以参考下。_/^(?:[1-9]d*)$/ 手机号
文章浏览阅读1.2k次。4、匹配中的==、an==、== an9、i9 == "9i"和99p==请注意下面这部分的作用,它在匹配中间内容的时候排除了说明:当html字符串如下时,可以匹配到两处,表示匹配的字符串不包含and且不包含空白字符。说明:在上面的正则表达式中,_gvim正则表达式匹配不包含某个字符串
文章浏览阅读897次。【代码】正则表达式匹配a标签的href。_auto.js 正则匹配herf