前端学习(三十二)正则(笔记)
===========================================
正则 正则表达式
Regular Expression
规则表达式
正则有两个作用:
1.操作字符串
2.校验表单
操作字符串
使用正则操作字符串非常简单,不是必须得用。使用是为了方便
============================================
正则玩的就是规则
itwenqiang@sina.com
137-1807-9033
010-4334567
北京市朝阳区建外SOHO东区 7304室
========================================
玩正则
var re = new RegExp('规则');
str.search(re);
var re = new RegExp('规则','选项');
i Ignore 忽略
忽略大小写
简写
var re = /规则/选项;
转义
\ 转义
\n 换行
\t tab 制表符
\\ \
正则中的转义
\d 0到9的数字
===========================================
匹配所有数字
str.match(re)
正则的特性:
1.懒
选项:
g global
全局匹配
2.笨
量词:
5个梨
梨{5}
若干
梨+ 最少1个,最多不限
3.贪婪
尽可能的多拿
==========================================
敏感词汇过滤
str.replace() 不用正则配合很弱
str.replace(str,str);
str.replace(str|re,str);
str.replace(/北京|斯达/,'***');
str.replace(str|re,str|fn);
==========================================
修饰
^ 行首
$ 行尾
==========================================
手机小说格式整理
选项
m muti-line
多行模式
单行模式(默认)
多行模式 m
========================================
选项
i Ignore 忽略大小写
m Muti-line 多行模式
g Global 全局匹配
[]
任选一个
/a[abc]c/
aac √
abc √
acc √
aabcc ×
范围
/[0-9]/ 所有数字
/[a-z]/ 所有小写英文字母
/[A-Z]/ 所有大写英文字母
/[0-9a-zA-Z]/ 所有数字英文字母
/0-z/ ×
排除
/[^0-9]/ 除了数字
/[^0-9a-zA-Z]/ 除了数字和英文
/[0-9^a-zA-Z]/ ×
/ab+/
abbbbbbbbbbb √
abababababab ×
/(ab)+/
abababababab √
abababababa ×
量词
{n} 出现n次
{n,m} 最少n个,最多m个
{n,} 最少n个,最多不限
? {0,1} 出现1次,或者不出现
* {0,} 出不出现都可以多少随意
+ {1,} 最少1次,最多不限
转义
\d /[0-9]/ 所有数字
\w /[a-zA-Z0-9_]/ 所有英文数字_
\s 所有空白符号
\D /[^0-9]/ 除了数字
\W /[^0-9a-zA-Z_]/ 除了数字英文_
\S 除了所有空白符号
. 所有字符
\. 字符串.
方法
str.search(re)
str.match(re)
=======================================
表单校验
re.test(str);
注意表单校验的正则必须加行首和行尾
座机校验
010-5323563
区号
3-4位的数字
第一位一定是0
第二位一定不是0
0[1-9]\d{1,2}
-
\-
号码
7-8位的数字
第一位一定不是0
[1-9]\d{6,7}
/^0[1-9]\d{1,2}\-[1-9]\d{6,7}$/
邮箱校验
itwenqiang @ sina .com
itwenqiang @ sina .com.cn
名字
英文数字_
\w+
@
\@
域名
英文数字-
[a-zA-Z0-9\-]+
域名后缀
. 2-8位字母 可以出现1-2次
(\.[a-zA-Z]{2,8}){1,2}
/^\w+\@[a-zA-Z0-9\-]+(\.[a-zA-Z]{2,8}){1,2}$/
年龄校验
18到100
18 19
1[89]
20-99
[2-9]\d
100
100
/^(1[89]|[2-9]\d|100)$/
手机号
11位数字
第一位一定是1
/^1[34578]\d{9}$/
身份证号
15或18位
最后一位有可能是x
第一位一定不是0
/^[1-9]\d{13}(\d|\d{2}[0-9x])$/i
========================================
操作字符串
去掉行首行尾空格
var str = ' on box ';
a).
var arr = str.match(/\s+/g);
str = arr.join(' ');
b).
str = str.replace(/^\s+|\s+$/g,'');
//中间多个空格替换成一个空格
var str = 'on box active';
str = str.replace(/\s+/g,' ');
//中间多个空格换成一个,首尾空格去掉
var str = ' on box active ';
str = str.replace(/^\s+|\s+$/g,'').replace(/\s+/g,' ');
==========================================
邮箱
/^\w+\@[a-z0-9\-]+(\.[a-z]{2,8}){1,2}$/i
年龄 18-100
/^(1[89]|[2-9]\d|100)$/
座机
/^0[1-9]\d{1,2}\-[1-9]\d{6,7}$/
手机
/^1[34578]\d{9}$/
身份证
/^[1-9]\d{13}(\d|\d{2}[0-9x])$/i
============================================