龙空技术网

JavaScript 正则表达式基本语法

寒笛过霜天 111

前言:

如今看官们对“用户名正则js”大约比较重视,小伙伴们都需要学习一些“用户名正则js”的相关文章。那么小编也在网摘上收集了一些有关“用户名正则js””的相关资讯,希望朋友们能喜欢,姐妹们快快来学习一下吧!

1. 什么是正则表达式

正则表达式就是记录文本规则的代码

正则表达式是由普通字符(例如字符 a A到 zZ)以及特殊字符(称为元字符)组成的文字模式。

正则表达式作为一个模板, 将某个字符模式与所搜索的字符串进行匹配。

在处理程序或网页时, 经常会有查找或替换符合某些复杂规则的字符串的需要。

2. 历史

正则表达式的"祖先"可以一直上溯至对人类神经系统如何工作的早期研究。

1956年, 一位叫Stephen Kleene的数学家在McCulloch和Pitts早期工作的基础上, 发表论文使用了正则表达式。

正则表达式的第一个实用应用程序就是Unix中的qed编辑器

3. 作用

①对表单域项目(用户名、密码、邮箱、qq号码、手机等等)进行验证

13\d{9}

[1-9]\d{4,11}

②网络爬虫(信息采集)(一个网站到另一个网站的页面上去获取对方的相关信息)

③内容替换、获取

4. 使用正则

正则组成内容:

普通字符(字母/数字/标点符号/特殊符号)、定义字符集、组合字符集、特殊字符集、限制字符集、模式修正符等

<script type="text/javascript">

//简单使用正则

//被匹配字符串

var str = "this is Monday";

//定义正则

var reg = /was/;

var str = "lksdl%&@@#%@_--";

var reg = /lksdl%&@@#%@_-/;

//进行匹配

//被匹配字符串.match(正则); 会返回匹配的对象结果

//没有匹配到就返回 null

var rst = str.match(reg);

document.write(rst);

</script>

4.1 定义字符集组成

定义字符集

[a-e]表示a到e这些字符中的某一个字符

[aeiou]表示aeiou这5个字符其中的某一个字符

[a-zA-Z]表示大写、小写字母中的某一个字符

[a-zA-Z0-9_-]

[0-9]表示0到9之间任意一个数字

[5-9]

[9-3] [z-a] 不能从大往小写,有语法错误

<script type="text/javascript">

//定义字符集

//没有特殊说明,都是“单次匹配”

//从字符串左边寻找到第一个符合正则的内容即可

//[a-z] [c-g]

var str = "hello";

var reg = /[b-f]/; //[e]

var reg = /[a-z]/; //[h]

//[a-zA-Z]

var str = "BeiJing";

var reg = /[a-zA-Z]/; //["B"]

var reg = /[a-z]/; //["e"]

//[a-zA-Z_]

var str = "Tom_123@163.com";

var reg = /[a-zA-Z_]/; //["T"]

//[0-9] [5-7]

var reg = /[4-9]/; //["6"]

//var reg = /[9-3]/; //错误用法

//[ympwx]

var reg = /[ympwx]/; //["m"]

var rst = str.match(reg);

document.write(rst);

</script>

4.2 特别字符组成

特别字符

$ : 匹配输入字符串的结尾位置。

^ : 表示字符串的开始位置

( ): 标记一个子表达式的开始和结束位置。

* : 其前面那个单元出现0次或以上(任意次数)

. : 匹配除换行符 \n之外的任何单字符 .*

+ : 其前面那个单元出现1次或以上

? : 其前面那个单元出现0次或1次

\ : 这个符号是用来转义的

| : 指明两项之间的一个选择

<script type="text/javascript">

//特别字符集

//没有特殊说明, 都是"单次匹配"

//从字符串左边寻找到第一个符合正则的内容即可

//"单次部分"匹配

//+ : 其前面那个单元出现1次或以上

var str = "2015-6-7";

var reg = /[0-9]+/;//["2015"]

var str = "gooogle";

var reg = /go+gle/;//["gooogle"]

//* : 其前面那个单元出现0次或以上(任意次数)

var str = "todayis20150607";

var reg = /[0-9]*/;//[""] 出现0次数字, *还有一层含义, 必须以前面那个单元开头

var str = "2015-0607todayis";

var reg = /[0-9]*/;//["2015"] 出现8次数字

//? : 其前面那个单元出现0次或1次

var reg = /go?gle/;

var str = "google";//null

var str = "gogle";//["gogle"]

var str = "ggle";//["ggle"]

var rst = str.match(reg);

document.write(rst);

</script>

<script type="text/javascript">

//特别字符集

//没有特殊说明, 都是"单次匹配"

//从字符串左边寻找到第一个符合正则的内容即可

//| : 或, 指明两项之间的一个选择

var str = "tom like pear,monkey like banana, cat like fish";

var reg = /banana|pear/;//["pear"]

//. : 匹配除换行符 \n之外的任何单字符 .*

var str = "slkdl(*(*^*&GHOIUY\n*&TGUIHU^$%#$%";

var reg = /.*/;//["slkdl(*(*^*&GHOIUY"]

//\ : 这个符号是用来转义的

// 把一些符号的特殊意思去掉,只保留符号最本质的意思

var str = "192.168.32.56";

var reg = /[0-9]+\.[0-9]+/;

var str = "hello*world";

var reg = /hello\*world/;//["hello*world"]

var rst = str.match(reg);

document.write(rst);

</script>

<script type="text/javascript">

//特别字符集

//没有特殊说明, 都是"单次匹配"

//从字符串左边寻找到第一个符合正则的内容即可

//^ : 表示字符串的开始位置(托字符)

var str = "Monkey like banana";

var reg = /^banana/; //banana必须作为字符串的开始位置出现

var reg = /^Monkey/; //["Monkey"] Monkey必须作为字符串的开始位置出现

//$ : 匹配输入字符串的结尾位置。

var reg = /banana$/;//banana必须出现在字符串的结尾位置

//【每个正常的正则表达式都要使用^和$符号】

//可以通过正则对目标字符串进行"整体"匹配

//{m}前边单元严格出现m次

var str = "13587287167";

var reg = /^13[0-9]{9}$/;

var rst = str.match(reg);

document.write(rst);

</script>

<script type="text/javascript">

//特别字符集

//没有特殊说明, 都是"单次匹配"

//从字符串左边寻找到第一个符合正则的内容即可

//( ): 标记一个子表达式的开始和结束位置。

// 同时成为"模式单元"

// 作用:

// ① 提高子表达式优先级

var reg = /(go)+gle/;

var str = "gooooogle";//null

var str = "gogogogogogogle";//["gogogogogogogle", "go"]

// ② 从一个大的字符串里边拆分小的内容出来

var str = '<h3 style="padding-bottom:0px;">06月07日</h3>';

var reg = /<.*>(.*)<.*>/;//["<h3 style="padding-bottom:0px;">06月07日</h3>", "06月07日"]

var str = "2015-06-07";

var reg = /([0-9]+)-([0-9]+)-([0-9]+)/;//["2015-06-07", "2015", "06", "07"]

var rst = str.match(reg);

//document.write(rst[1]);//06月07日

//document.write("月份:"+rst[2]);//月份:06

document.write(rst);

</script>

4.3 模式修正符组成

var 模式名称 = /模式内容/模式修正符;

模式修正符:

i 忽略大小写

g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止), 进行全局匹配的时候不给体现"模式单元"内容

请注意, 无论 RegExpObject 是否是全局模式, exec() 都会把完整的细节(子表达式)添加到它返回的数组中

<script type="text/javascript">

//模式修正符

//i->忽略大小写

//g->全局匹配(查找所有匹配而非在找到第一个匹配后停止), 进行全局匹配的时候不给体现"模式单元"内容

var str = "BeiJing and ShangHai";

var reg = /[a-z]+/ig;//["BeiJing", "and", "ShangHai"]

var str = "BeiJing and ShangHai";

var reg = /[a-z]+/i; ["BeiJing"]

var str = "2015-06-07";

var reg = /[0-9]+/g;//["2015", "06", "07"]

var str = "2015-06-07";

var reg = /[0-9]+/; //["2015"]

var str = "2015hello1997xianggang";

var reg = /[0-9]+([a-z]+)/g;//["2015hello", "1997xianggang"]

var str = "2015hello1997xianggang";

var reg = /[0-9]+([a-z]+)/;//["2015hello", "hello"] 子表达式

var rst = str.match(reg);

document.write(rst);

</script>

4.4 匹配中文

var str = "一本书";

var re = /[\u4e00-\u9fa5]{2}/g;//匹配汉字

console.log(str.match(re)) //[一本]

标签: #用户名正则js