JS---正则表达式

正则表达式

正则的创建规则

  1. /abcd/;
  2. new RegExp(“abcd”);

正则的元字符

就是用来描述内容的一些符号

  1. “.”(点)

    表示:非换行的任意字符。

var reg =/./;
var str ="afagdage";
var str1 ="\n";
var str2 ="agdgb\nfagd";
console.log(reg.test(str));//=true;
console.log(reg.test(str1));//=false;
console.log(reg.test(str2));//=true;
  1. "\ "(斜线)

    表示:转译,把有意义的变成没有意义的;把没有意义的变为有意义的;

var reg = /\./;//把原本有意义的“.”转成没有意义的字符“.” 不再表示非换行的任意字符;
var str = "abc";
var str1 ="a.bc";
console.log(reg.test(str));//=false;
console.log(reg.test(str1));//= true;
  1. “\s”(斜杠小写s)

    表示:空格

var reg =/\s/;//判断字符串中是否包含空格
var str ="abcds";
var str1= "ab cds";
console.log(reg.test(str));//=false;
console.log(reg.test(str1));//= true;
  1. “\S”(斜杠大写S)

    表示:非空格

var reg =/\S/;//判断字符床中是否包含非空格
var str ="            ";
var str1="           a         ";
console.log(str);//=false;
console.log(str1);//= true;
  1. “\d”

    表示:包含一个数字

var reg =/\d/;//判断字符串中是否包含数字
var str ="abcd";
var str1 ="abcd1";
console.log(str);//=false;
console.log(str1);//= true;
  1. “\D”

    表示字符串中需要包含一个非数字

var reg =/\D/;//判断字符串中是否包含非数字
var str ="123455";
var str1 ="12345a";
console.log(str);//=false;
console.log(str1);//= true;
  1. “\w”(斜杠小写w)

    表示:数字、字母、下划线

var reg =/\w/;//判断字符串中是否包含数字 字母 下划线
var str ="@#¥%%……&";
var str1 ="@#¥%%……&a";
var str2 ="@#¥%%……&7";
var str3 ="_@#¥%%……&";
console.log(str);//=false;
console.log(str1);//= true;
console.log(str2);//=true;
console.log(str3);//= true;
  1. “\W”(斜杠大写W)

    表示:非数字、字母、下划线

var reg =/\W/;//判断字符串中是否包含非数字 字母 下划线
var str ="_2A%$";
var str1 ="_2A";
console.log(str);//=true;
console.log(str1);//= false;

正则的边界符

用来限制正则的边界,也是限制字符串的边界

  1. “^”

表示:开始

var reg = /^abcd/;//判断字符串是不是以a开头并且和bcd连着
var str = "gabcdfaf"
var str1="abcdfafg";
console.log(reg.test(str));//=false;
console.log(reg.test(str1));//=true;
  1. “$”

表示:结束

var reg = /abcd$/;//判断字符串是不是以d结尾并且和abc连着
var str = "abcdfaf"
var str1="fafgabcd";
console.log(reg.test(str));//=false;
console.log(reg.test(str1));//=true;
  1. 综合开始和结束的边界符
var reg = /^abcd$/;//判断字符串是不是以a开头以d结尾并且都和bc连着
var str = "abcde"
var str1="abcd";
console.log(reg.test(str));//=false;
console.log(reg.test(str1));//=true;

元字符和边界符的小例子

var reg = /^\d$/;//开头和结束都是数字并且只有一个字符
var reg1 = /^\d\d\d\d$/;//开头和结束都是数字并且中间连着2个数字
var str = "1"
var str1="1234";
console.log(reg.test(str));//=true;
console.log(reg1.test(str));//=false;
console.log(reg.test(str1));//=false;
console.log(reg1.test(str1));//=true;

正则的限定符

用来描述每一个正则 “元字符” 出现的次数

  1. “+”

表示1到正无穷次

var reg = /\d+/;//判断字符串是否包含最少一个数字
var str = "abcde"
var str1="abcde123";
console.log(reg.test(str));//=false;
console.log(reg.test(str1));//=true;

var reg1=/^\d+$/;//表示字符串只能由一位及其以上的数字组成
var str2 = "ab1234"
var str3="123456";
var str4 ="";
console.log(reg.test(str2));//=false;
console.log(reg.test(str3));//=true;
console.log(reg.test(str4));//=false;
  1. “*”

表示0到正无穷次

var reg = /\d*/;//判断字符串是否包含最少0个数字
var str = "abcde"
var str1="abcde123";
console.log(reg.test(str));//=true;
console.log(reg.test(str1));//=true;

var reg1=/^\d*$/;//表示字符串只能由0位及其以上的数字组成
var str2 = "ab1234"
var str3="123456";
var str4 ="";
console.log(reg.test(str2));//=false;
console.log(reg.test(str3));//=true;
console.log(reg.test(str4));//=true;
  1. “?”

表示0或者1次

var reg = /\d?/;//判断字符串是否(包含)0个或者1个数字
var reg1=/^\d?$/;//判断字符串是否(只能)由0个或者1个数字
var str = "abcd1"
var str1="abcd12";
var str2="abcd";
var str3="";
var str4="1";
var str5="12";

console.log(reg.test(str));//=true;
console.log(reg.test(str1));//=true;
console.log(reg.test(str2));//=true;
console.log(reg.test(str3));//=true;
console.log(reg.test(str4));//=true;
console.log(reg.test(str5));//=true;

console.log(reg1.test(str));//=false;
console.log(reg1.test(str1));//=false;
console.log(reg1.test(str2));//=false;
console.log(reg1.test(str3));//=true;
console.log(reg1.test(str4));//=true;
console.log(reg1.test(str5));//=false;
  1. “{n}”

表示n次

var reg = /\d{3}/;//判断字符串是否(包含)1个 3个数字连着 的字符片段
var reg1=/^\d{3}$/;//判断字符串是否(只能)由1个 3个数字连着 的字符片段
var str = "abcd1"
var str1="abcd159";
var str2="abcd15903";
var str3="";
var str4="159";
var str5="15903";

console.log(reg.test(str));//=false;
console.log(reg.test(str1));//=true;
console.log(reg.test(str2));//=true;
console.log(reg.test(str3));//=false;
console.log(reg.test(str4));//=true;
console.log(reg.test(str5));//=true;

console.log(reg1.test(str));//=false;
console.log(reg1.test(str1));//=false;
console.log(reg1.test(str2));//=false;
console.log(reg1.test(str3));//=false;
console.log(reg1.test(str4));//=true;
console.log(reg1.test(str5));//=false;
  1. “{n,}”

表示至少n次

var reg = /\d{3,}/;//判断字符串是否最少(包含)1个 3个数字连着 的字符片段
var reg1=/^\d{3,}$/;//判断字符串是否(只能)由1个 最少3个数字连着 的字符片段
var str = "abcd1"
var str1="abcd159";
var str2="abcd15903";
var str3="";
var str4="159";
var str5="15903";

console.log(reg.test(str));//=false;
console.log(reg.test(str1));//=true;
console.log(reg.test(str2));//=true;
console.log(reg.test(str3));//=false;
console.log(reg.test(str4));//=true;
console.log(reg.test(str5));//=true;

console.log(reg1.test(str));//=false;
console.log(reg1.test(str1));//=false;
console.log(reg1.test(str2));//=false;
console.log(reg1.test(str3));//=false;
console.log(reg1.test(str4));//=true;
console.log(reg1.test(str5));//=true;
  1. “{n,m}”

表示至少n次之多m次

var reg = /\d{1,3}/;//判断字符串是否(包含)1个 最少1个最多3个数字连着 的字符片段
var reg1=/^\d{1,3}$/;//表示字符串只能由1到3位数字组成
var str = "abcd1"
var str1="abcd159";
var str2="abcd15903";
var str3="";
var str4="159";
var str5="15903";

console.log(reg.test(str));//=true;
console.log(reg.test(str1));//=true;
console.log(reg.test(str2));//=true;
console.log(reg.test(str3));//=false;
console.log(reg.test(str4));//=true;
console.log(reg.test(str5));//=true;

console.log(reg1.test(str));//=false;
console.log(reg1.test(str1));//=false;
console.log(reg1.test(str2));//=false;
console.log(reg1.test(str3));//=false;
console.log(reg1.test(str4));//=true;
console.log(reg1.test(str5));//=false;

小例子

问题:写一个0~678数字的验证正则

var str ="555";
// \d|\d{2} 一位数两位数都可以 6[0-6]\d 百位数是6十位数小于等于6个位数为任意数字都可以 
//67[0-8] 百位数是6十位数是7个位数小于等于8都可以
var reg =/^(\d|\d{2}|[1-5]\d{2}|6[0-6]\d|67[0-8])$/;
console.log(reg.test(str));//如果str<678输出结果就为true,否则为false;

特殊符号

  1. “()”
    • 表示一个集合
var reg = /^abcd{2}$/;//表示从开头到结尾需要abcdd字符串(^只修饰其后面的一个字符 $ 只修饰其前面一个字符)
var reg1=/^(abcd){2}$/;//表示从开头到结尾需要abcdabcd字符串(^和$修饰紧挨着的括号内的整体)
var str = "abcdabcd"
var str1="abcdd";

console.log(reg.test(str));//=false;
console.log(reg.test(str1));//=true;

console.log(reg1.test(str));//=true;
console.log(reg1.test(str1));//=false;
  • 再捕获的时候单独捕获(exec())
    • 如果正则中有小括号,会把小括号中的内容单独捕获出来,按照从左到右的顺序看小括号开始“(” 索引0位全部字符串捕获,小括号捕获从索引1开始
       var reg =/((\d+)([a-zA-Z]{3}))/;
       var str = "1abc12abc123abc";
       var res = reg.exec(str);//=["1abc","1abc","1","abc"]
       console.log(res);
    
    
  1. “[]”

表示一个任意选择的集合,出现在中括号内的内容,出现任意一次就行

var reg = /^[abcd]{2}$/;//表示字符串从开头到结尾只能 由a或者b或者c或者d组成的两个字符
var str = "aa"
var str1="ab";
var str2="ae";

console.log(reg.test(str));//=true;
console.log(reg.test(str1));//=true;
console.log(reg.test(str2));//=false;
  1. “[^]”

表示一个非任意选择的集合,出现在这个符号中的任意一个字符都不能出现

var reg = /^[^abcd]$/;//表示这一位字符不能是a/b/c/d
var str = "a"
var str1="b";
var str2="e";

console.log(reg.test(str));//=false;
console.log(reg.test(str1));//=false;
console.log(reg.test(str2));//=true;
  1. “|”

或(一般和"()"一块使用)

var reg = /^(163|162|161)$/;//表示字符串要么是163要么是162要么是161
var str = "163"
var str1="162";
var str2="168";

console.log(reg.test(str));//=true;
console.log(reg.test(str1));//=true;
console.log(reg.test(str2));//=false;
  1. “-”(英文状态中划线)

表示:到(必须是 ASCII 编码是挨着的),一般和“[]”一块使用。
[0-9]等价于\d [^0-9]等价于\D [0-9a-zA-Z_]等价于\w [^0-9a-zA-Z_]等价于\W

var reg = /^[a-z]$/;//表示这一个字符是 a至z 26个小写英文字母中的任意一个
var str = "m"
var str1="M";
var str2="1";

console.log(reg.test(str));//=true;
console.log(reg.test(str1));//=false;
console.log(reg.test(str2));//=false;

正则的方法

  1. 匹配
  • test()

就是检测字符串是否符合规则,返回bool值

  1. 捕获
  • exec()

就是把字符串中符合要求的那一段字符单独拿出来

  • 语法:

正则表达式.exec(要捕获的字符串); 返回值为一个数组,
数组第0项是按照正则要求捕获出来的内容,
index:表示找到的字符片段是从哪一个索引开始的
input:表示原始字符串

特性:懒惰性,只找到一个符合规则的就返回结果执行完毕,下次再捕获还是从索引0开始
对一个字符串同一个正则进行捕获,每次结果都相同;

  • 标识符
    • g (表示全局的意思)

    书写在正则表达式后面(/[0-9]/g) 当正则表达式有了标识符g的时候,会在第二次捕获的时候从第一次捕获的结尾处开始查找,
    如果没有找到返回null,当返回null的时候下一次再捕获又会从索引0开始捕获

var reg = /\d{3}/;
var reg1=/\d{3}/g;
var str = "agadgdag123agadga456geagag7891"
var res = reg.exec(str);
var res1 = reg.exec(str);

var res2 = reg1.exec(str);
var res3 = reg1.exec(str);
console.log(res);//res[0]=123 res.index=8 res.input=str
console.log(res1);//res1[0]=123 res1.index=8 res1.input=str

console.log(res2);//res[0]=123 res.index=8 res.input=str
console.log(res3);//res1[0]=456 res1.index=17 res1.input=str
  • 循环捕获
var str = "agadgdag123agadga456geagag7891";
var reg=/\d{3}/g;
var arr=[];
var res = reg.exec(str)
while(res){
arr.push(res[0]);
res = reg.exec(str);
}
console.log(arr);//=["123","456","789"];

字符串和正则合作的方法

  1. search();

语法:字符串.search(正则或者需要寻找的字符串);

返回值:如果找到就返回字符串片段开始的索引,没找到就返回-1;

var reg=/(123)/;
var str ="abcd123abcd123";
var res = str.search("123");//判断字符串是否包含“123”
var res1 = str.search(reg);//判断字符串是否包含“123”
console.log(res);//=4
console.log(res1);//=4
  1. match();

语法:字符串.match(正则或者需要寻找的字符串);

返回值:当正则没有全局标识符g的时候,和exec捕获方法一样,当正则有全局标识符g的时候,返回值是捕获到的每一个内容,以一个数组的形式返回

var reg =/\d{3}/;
var reg1=/\d{3}/g;
var str ="abcd123abcd456aaa";
var res = str.match(reg);
var res1 = str.match(reg1);
console.log(res);//和exec()得到的结果一样 res[0]=123 res.index=4 res.input=str
console.log(res1);//["123","456"]
  1. replace();

语法:字符串.replace(正则);

返回值:没有全局标识符“g”的时候,只替换发现的第一个,有全局“g”的时候替换发现所有的,然后返回替换之后的字符串

var reg =/HH/;
var reg1=/HH/g;
var str ="abcHHdefHHghi";
var res = str.replace(reg);
var res1 = str.replace(reg1);
console.log(res,"**");//"abc**defHHghi"
console.log(res1,"**");//"abc**def**ghi"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JavaScript正则表达式和Java正则表达式在语法上有一些差异,但是它们的基本概念和用法是相似的。下面是将JavaScript正则表达式转换为Java正则表达式的一些常见规则: 1. 语法差异: - JavaScript正则表达式使用斜杠(/)作为定界符,而Java正则表达式使用双引号(")作为定界符。 - JavaScript正则表达式中的特殊字符需要进行转义,而Java正则表达式中的特殊字符不需要转义。 2. 字符类: - JavaScript正则表达式中的字符类使用方括号([])表示,而Java正则表达式中使用方括号([])或者Unicode转义(\p{...})表示。 - JavaScript正则表达式中的字符类可以使用连字符(-)表示范围,而Java正则表达式中需要使用Unicode转义(\uXXXX)表示范围。 3. 量词: - JavaScript正则表达式中的量词使用花括号({})表示,而Java正则表达式中使用花括号({})或者问号(?)表示。 - JavaScript正则表达式中的贪婪量词默认是贪婪模式,而Java正则表达式中的贪婪量词需要在后面添加问号(?)来表示非贪婪模式。 4. 边界匹配: - JavaScript正则表达式中的边界匹配使用插入符号(^)和美元符号($)表示,而Java正则表达式中使用\A和\Z表示。 5. 其他差异: - JavaScript正则表达式中的捕获组使用圆括号(())表示,而Java正则表达式中使用圆括号(())或者方括号([])表示。 - JavaScript正则表达式中的反向引用使用反斜杠加数字(\1、\2等)表示,而Java正则表达式中使用美元符号加数字($1、$2等)表示。 以上是一些常见的JavaScript正则表达式转换为Java正则表达式的规则。具体转换时,还需要根据具体的正则表达式进行适当的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

司军礼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值