首页 > 编程笔记 > JavaScript笔记 阅读:10

JavaScript RegExp对象的用法(附带实例)

正则表达式是计算机科学的一个概念,通常用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。

JavaScript 中,RegExp 对象用于处理正则表达式。Web 前端的用户名验证、邮箱验证、密码验证、敏感词过滤等,都可以使用正则表达式来实现。本节将介绍常用正则表达式的用法。

常用正则表达式

var tel = /^\d{11}$/; // 手机号码规则:只能输入11位数字
var userName = /^[a-zA-Z0-9_]{6,16}$/; // 用户名规则:只能输入英文字母、数字、下画线,长度是6~16个字符
上述代码中,“/”是正则表达式的定界符,“^1[3|4|5|7|8]\d{9}$”表示正则表达式的模式文本。

RegExp对象常用方法

test() 方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配。语法格式如下:
regexObj.test(str)

示例如下:
var tel = /^1[3|4|5|7|8]\d{9}$/;
console.log(tel.test('15936078521')); // 输出:true
console.log(tel.test('1693607851')); // 第2位不符合规则,输出:false
console.log(tel.test('26936078521')); // 第1位不符合规则,输出:false

【实例】用户名验证。
<input type="text" class="uname"> <span>请输入用户名</span>
<script>
var reg = /^[a-zA-Z0-9_]{6,16}$/;
var uname = document.querySelector('.uname');
var span = document.querySelector('span');
uname.onblur = function() {
    if (reg.test(this.value)) {
        span.className = 'right';
        span.innerHTML = '用户名格式输入正确';
    } else {
        span.className = 'wrong';
        span.innerHTML = '用户名格式输入不正确';
    }
}
</script>
程序的功能是当文本框失去焦点时,判断文本框中输入的用户名是否符合规则,并给出相应提示:
当用户输入正确时,程序在 Chrome 浏览器中的运行结果如下图所示:

String对象的正则方法

String 对象中常用的正则方法有 repalce() 方法、search() 方法和 match() 方法。下面分别介绍这 3 种方法。

1) replace() 方法可以在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。语法格式如下:
stringObject.replace(regexp/substr,replacement)

示例如下:
var str = ' abc';
console.log(str.replace(/^\s+/g, "")); // 把字符串前端的空白字符删除,输出:'abc'
var str2 = '禁止暴力';
console.log(str2.replace(/暴力/g, "**")); // 敏感词替换,输出:'禁止**'

2) search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。语法格式如下:
stringObject.search(searchvalue)

示例如下:
var str = "white red green blue";
console.log(str.search(/blue/)); // 搜索字符串blue,输出:16

3) match() 方法在字符串内检索指定的值,找到一个或多个正则表达式的匹配。语法格式如下:
stringObject.match(searchvalue/regexp)

示例如下:
var str = '1234abcd5678qwer9';
console.log(str.match(/\d+/g)); // 找出字符串中所有数字,输出:['1234', '5678', '9']

相关文章