正则表达式基础知识总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式基础知识总结相关的知识,希望对你有一定的参考价值。

这篇随笔分四个模块和大家分享:

一、这次将数组创建表格形象化,希望下面的代码能解开你的疑惑(数组怎样能创建表格?数组嵌套后不一定是行列显示,如果数组的长度变短,在控制台就会显示在一行,也不能体现出表格的样式?)。

二、继上次引用类型Date类型知识点的总结,这次将Date的获取当前指定格式时间做了一些补充,解决get月、日、时、分、秒时必须显示两位数的问题,如9月显示09,9点显示09。

三、正则表达式的基础知识点总结

四、Sting对象提供的各种方法总结

  • 利用数组创建表格

<style>

span{

display: inline-block;

width: 140px;

border: 1px solid #f0f0f0;

}

</style>

<script>

var arr = [[‘‘,‘‘,‘‘],[‘‘,‘‘,‘‘],[‘‘,‘第地‘,‘第士‘]];

for(var i in arr ){

for(var j in arr[i] ){

document.write( "<span>"+arr[i][j]+"</span>" )

}

document.write("<br>")

}

</script>

html页面 - chrome - 运行效果图如下:

技术分享

 

  • 获取指定格式的当前时间

//TODO 指定格式输出当前时间 - YYYYMMDDhh:mm:ss

var d1 = new Date ();

console.log(d1.getFullYear() + ‘‘ + (d1.getMonth()+1) + ‘‘ + d1.getDate() + ‘‘ + d1.getHours() + ‘:‘ + d1.getMinutes() +‘:‘ + d1.getSeconds());


//TODO 指定格式输出当前时间 - yyyy-mm-dd hhmmss

function getCurrentTime() {

var date = new Date();

var month = zeroFill(date.getMonth()+1);

var day = zeroFill(date.getDate());

var hour = zeroFill(date.getHours());

var minutes = zeroFill(date.getMinutes());

var seconds = zeroFill(date.getSeconds());

var curTime = date.getFullYear() + ‘-‘ + month + ‘-‘ + day + ‘ ‘ + hour +‘:‘+minutes + ‘:‘+seconds;

return curTime;

}

function zeroFill(i) {

if (i >= 0 && i <= 9){

return ‘0‘+i;

}else {

return i;

}

}

console.log(getCurrentTime());


//TODO 指定格式输出当前时间 – yyyy-mm-dd

<script>

var d1 = new Date();

var time = d1.getFullYear() + ‘-‘ + (d1.getMonth()+1) + ‘-‘ + d1.getDate() + ‘ ‘ + d1.getHours() + ‘:‘ + d1.getMinutes() + ‘:‘ + d1.getSeconds();

</script>

</head>

<body>

<form action="#">

<input type="button" value="当前时间" onclick="alert(‘当前时间:‘+ time)">

</form>

</body>

 

  • // TODO 正则表达式的定义

方式

语法结构

举例

1.字面量方式定义

/正则表达式的规则/修饰符

var reg1 = //;正则表达式的语法结构不允许定义空正则表达式

var reg2 = /123/;

2.构造函数方式

new RegExp(pattern,attributes)

pattern – 表示正则表法式的规则

attributes - 表示修饰符

var reg3 = new RegExp(/^[123]$/);


  • //TODO 与数组情况类似

  • console.log(typeof reg3); //TODO 返回object

  • console.log(reg3 instanceof RegExp); //TODO TRUE

 

  • // TODO 正则表达式的应用 - 验证

  • 技术分享


  • //TODO 正则表达式的规则

规则

释义

1.[]

表示匹配内容的集合 - 只要匹配当前集合中任意一个字符即可

2.^

表示匹配开始的位置(以什么开始)

3.$

表示匹配结束的位置(以什么结束)

4.{n,m}

* n – 重复次数下限

* m - 重复次数上限

表示匹配内容重复次数

5. 要匹配的数字和字母

数字

小写字母

大写字母

数字字母下划线


0-9 \\d

a-z

A-Z

0-9a-zA-Z_ \\w

特殊举例说明

举例

说明

var reg4 = /^[1Af]$/;

/ TODO 以什么开始,以什么结束 - 表示以指定集合中任意一个字符开始,并且结束,同一字符,数量一样

// TODO 也就是字符串只能为 ‘1‘‘A‘‘f‘

var reg4 = /[1]{1,2}/;

//TODO 出现1,至少出现1次,最多出现2次,只要出现1就返回true,后面不再查找

var reg4 = /^[a12]{1,2}/;

// TODO 以集合中任意字符开始,至少出现1次,最多出现2次,只要出现1就返回true,后面不再查找

var reg4 = /^[a12]{1,2}$/;

// TODO 必须以a12集合任意字符开始和结束,字符长度为2 - 字符串为a1 ->true ;字符串为a12 ->false


  • //TODO 正则表达式的修饰符

g - 全局检索

i - 不区分大小写检索

m – 多行搜索

console.log(str2.match(/124/g)); //返回 [ ‘124‘, ‘124‘ ]

// TODO 正则表达式g修饰符表示全局搜索,返回一个或多个与正则表达式匹配的值

var data = ‘Microsoft is a big Company, microsoft’s color is red and has MICROSOFT logo like microsoft‘;

console.log( data.replace(/microsoft/ig, ‘oracle‘) );

//返回 oracle is a big Company, oracle’s color is red and has oracle logo like oracle

//TODO 将所有的 microsoft不区分大小写的进行替换

var st = ‘this‘ +

‘ is ‘ +

‘string‘;

// TODO 将字符串换行,默认显示成字符串的拼接,所以借助\\n进行转义换行,此时m多行搜索可以起到作用

var sr =‘12s\\n3sa\\nAsd‘;

console.log(sr.match(/s/gm)); //TODO [ ‘s‘, ‘s‘, ‘s‘ ]

 

  • //TODO 正则表达式练习

// TODO 必须是数字,并且长度在3~5之间

var reg5 = /^[0-9]{3,5}$/;

//TODO 必须是数字、字母,并且长度在6~12之间

var reg6 = /^[0-9a-zA-Z]{6,12}$/;

var reg7 = /^\\w{6,12}$/;

// TODO [^...] -> 匹配一个反向字符集

var reg8 = /[^123]/;

console.log(reg8.test(‘123‘)); //TODO false


  • //TODO 字符串对象的方法

方法

作用

参数

返回值

举例

search(regexp)方法:


检索字符串中是否包含指定内容

string -指定检索的文本内容

regexp -指定检索正则表达式的文本内容

1.如果包含返回匹配的第一个字母所在位置

2.如果不包含返回-1

console.log(str2.search(‘124‘)); // TODO 0

console.log(str2.search(/10/)); // TODO -1

match()方法:


指定字符串匹配指定文本内容

string -指定检索的文本内容

regexp -指定检索正则表达式的文本内容

1.匹配的内容;

2.匹配内容第一个的索引值(位置);

3.当前的字符串

console.log(str2.match(‘124‘)); //TODO [ ‘124‘, index: 0, input: ‘1245678asd124‘ ] - 索引数组,关联数组


replaceregexpreplacement)方法:

使用指定内容替代查找的正则表达式匹配的内容

regexp – 用于匹配当前字符串中符合正则表达式规则的内容

replacement - 用于替代正则表达式匹配的内容

替换之后的结果

注意:此次替换不影响原字符串的内容

console.log(str2.replace(/124/g,‘what‘));//TODO what5678asdwhat

 

  • // TODO 字符串的属性

var str3 = new String(‘this is string‘);

console.log(str3.length); //TODO 14 包含两个空格


  • // TODO 字符串的遍历循环

for (var i = 0; i < str3.length; i++){

console.log(str3[i]); // TODO 遍历时空格也输出

}


  • // TODO 字符串与数组的关系

console.log(str3 instanceof String);

console.log(str3 instanceof Array); //false

 

    • // TODO String对象提供的方法

类型

方法

释义

举例

获取位置方法

charAt(index)方法

返回指定位置的字符串

var str4 = ‘[email protected]@sohu.com‘;

console.log(str4.charAt(3)); @

charCodeAt()

返回指定位置字符的Unicode编码

console.log(str4.charCodeAt(0)); 116

检索字符串

indexOf(valuestartIndex)

从前往后检索

value -> string 要搜索的字符串;

startIndex -> number 指定索引的开始索引包含开始(可选)

console.log(str4.indexOf(‘@‘)); //TODO 3

console.log(str4.indexOf(‘@‘,6));// TODO 7

lastIndexOf(valuestartIndex)

从后往前检索

value -> string 要搜索的字符串;

startIndex -> number 指定索引的开始索引包含开始(可选)

console.log(str4.lastIndexOf(‘@‘));//TODO 7

console.log( str4.indexOf(‘Mary‘)); //TODO -1

截取子字符串

slice(start,end可选)

截取指定开始位置与结束位置间的字符 1.end不写默认开始到最后;startend可为负数,不包含end

console.log(str4.slice(2,4));//TODO [email protected]

console.log(str4.slice(-3,-1));//TODO co

substrstartlength可选)

截取指定位置开始指定长度的字符 1.length超出字符串长度默认到最后;2.length不写默认开始到最后

console.log(str4.substr(2,2));//TODO [email protected]

substring (startend)

startend不能为负整数,相比slice常用

console.log(str4.substring(2,4));//TODO [email protected]

分割字符串

splitseparator,limit可选)

将字符串用分隔符分割成字符串数组

参数- separator:字符串或正则表达式,从指定位置分割,不包含separatorlimit:值为number,返回数组的最大长度

var str5 = ‘13 2 3 43 5‘;

console.log(str5.split(‘ ‘));//[ ‘13‘, ‘2‘, ‘3‘, ‘43‘, ‘5‘ ]

console.log(str5.split(‘ ‘,3));//[ ‘13‘, ‘2‘, ‘3‘ ]

console.log(str5.split(‘3‘));// 不包含3 [ ‘1‘, ‘ 2 ‘, ‘ 4‘, ‘ 5‘ ]

console.log(str5); //TODO split()不改变原字符串内容

大小写转换

toUpperCase()

将字符串转换成全大写

console.log(msg.toUpperCase()); //TODO HELLO WORLD

toLowerCase()

将字符串转换成全小写

console.log(msg.toLowerCase());// TODO hello world


  • //TODO 反转字符串 – 54321

var information = ‘12345‘;

var arr = information.split(‘‘); //TODO 字符串分割为数组

console.log(arr.reverse()); // TODO 数组的反转

var string = console.log((arr.toString()).replace(/,/g,‘‘));// TODO 数组转换成字符串,使用字符串的替换掉逗号


  • //TODO 使用字符串截取判断是否包含子字符串

var str6 = ‘GJ2as3v124df123gd‘;

var str7 = ‘v124‘;

var result4 = str6.substr(str6.indexOf(str7),str7.length); //TODO 截取substrstring字符串,length长度)

if (result4 == str7){

console.log(‘包含‘);

}else {

console.log(‘不包含‘)

}


以上是关于正则表达式基础知识总结的主要内容,如果未能解决你的问题,请参考以下文章

Java 正则表达式知识点总结

正则表达式 知识总结

正则表达式基础知识总结

正则表达式总结与补充.

关于正则表达式的总结

正则表达式必知必会小总结