正则

正则

一、正则的定义方式

var reg = new RegExp("W3School", "g");
var reg = /abc/g;

二、exec、match、test的区别

  • exec返回符合要求的数组,参数是要检验的字符串;返回的数组有三个属性:分别是input,index,lastIndex
    reg.exec(string)
const reg = /\d+(.\d+)/g
var str = '大米:2.57斤/元,白菜:3.65元/斤';
var arr = reg.exec(str)
console.log(arr[0]) // 2.57
console.log(arr) 
// [
//   '2.57',
//   '.57',
//   index: 3,
//   input: '大米:2.57斤/元,白菜:3.65元/斤',
//   groups: undefined
// ]
<script type="text/javascript">
var str = "Visit W3School"; 
var patt = new RegExp("W3School","g");
var result;
while ((result = patt.exec(str)) != null)  {
  document.write(result);
  document.write("<br />");
  document.write(patt.lastIndex);
}
</script>
输出值:
W3School
14
  • match是字符串执行匹配正则表达式规则的方法,他的参数是正则表达式
    string.match(reg)
const reg = /\d+(.\d+)/g
var str = '大米:2.57斤/元,白菜:3.65元/斤';
var arr = str.match(reg);  
console.log(arr) // [ '2.57', '3.65' ]
exec与全局是否定义无关系,而match则于全局相关联;
当定义为非全局,两者执行结果相同;
const reg = /\d+(.\d+)/
var str = '大米:2.57斤/元,白菜:3.65元/斤';
var arr = str.match(reg);  
console.log(arr[0]) // 2.57
var arr1 = reg.exec(str)
console.log(arr1[0]) // 2.57
  • test(string): 测试string是否含有匹配结果,返回true和false
const reg = /\d+(.\d+)/
var str = '大米:2.57斤/元,白菜:3.65元/斤';
var arr = reg.test(str);  
console.log(arr) // true

三、replace的用法

var str1 = '生于1999年';
var num1 = str1.replace(/[^\d]/g, '');
var num2 = str1.replace(/[\d]/g, '');
console.log(num1) // 1999
console.log(num2) // 生于年

四、创建RegExp对象的语法

new RegExp(pattern, attributes);
attributes有三个值:
g: 全局匹配(查找所有匹配,而非在第一个匹配后停止)
i: 区分大小写的匹配
m: 多行匹配

五、查找范围

语法意义
[abc]查找方括号之间的任何字符
[^abc]查找任何不在方括号之间的字符
[0-9]查找任何从 0 至 9 的数字
[a-z]查找任何从小写 a 到小写 z 的字符
[A-z]查找任何从大写 A 到小写 z 的字符
(red | blue | green)查找任何指定的选项
元字符意义
\w查找单词字符
\W查找非单词字符
\d查找数字
\D查找非数字字符
\s查找空白字符
\S查找非空白字符
\b匹配单词边界
\B匹配非单词边界
function trim(s) {
  return s.replace(/(\s*$)|(^\s*)/g, "");
}
console.log(trim('   weew  ')) // weew 前后空格都不在
量词意义
n+匹配任何包含至少一个 n 的字符串
n*匹配任何包含零个或多个 n 的字符串
n?匹配任何包含零个或一个 n 的字符串
n{X}匹配包含 X 个 n 的序列的字符串
n{X,Y}匹配包含 X 至 Y 个 n 的序列的字符串
n{X,}匹配包含至少 X 个 n 的序列的字符串
n$匹配任何结尾为 n 的字符串
^n匹配任何开头为 n 的字符串
?=n匹配任何其后紧接指定字符串 n 的字符串
?!n匹配任何其后没有紧接指定字符串 n 的字符串

六、邮箱正则

^[A-z0-9_-]+@[A-z0-9_-]+(\.[A-z0-9_-]+)+$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值