正则表达式是用于匹配字符串中字符组合的模式。
正则表达式通常被用来检索,替换那些符合某个模式的文本。
var regexp = new RegExp(/表达式/);
var 变量名 = /表达式/;
test() 正则对象方法,用于检测字符串是否符合该规则。
<script> var regexp = new RegExp(/123/); // 只要包含有123就为true console.log(regexp.test(123)); // true console.log(regexp.test('abc')); // false </script>
一个正则表达式可以由简单的字符组成,比如
/abc/
也可以是简单和特殊字符的组合,比如/ab*c/
.
特殊字符也被称为元字符,在正则表达式中是具有特殊意义的专用符号。
^
: 匹配行首的文本(以谁开始)
$
: 匹配行尾的文本(以谁结束)
<script> var regexp = new RegExp(/^123/); // 表示以123开头 console.log(regexp.test(1234)); // true console.log(regexp.test(1123)); // false </script>
<script> var regexp = new RegExp(/123$/); // 表示以123结尾 console.log(regexp.test(1234)); // false console.log(regexp.test(1123)); // true </script>
<script> var regexp = new RegExp(/^123$/); // 表示必须是123,其他的都不行 console.log(regexp.test(123)); // true console.log(regexp.test(1123)); // false </script>
[ ]
表示有一系列字符可供选择,只有匹配其中一个就可以了。
<script> var regexp = new RegExp(/[123]/); // 匹配其中的一个就可以 console.log(regexp.test(1456)); // true console.log(regexp.test(246)); // true </script>
<script> var regexp = new RegExp(/^[123]$/); // 表示只有是 a,b,c里面的其中一个才为true console.log(regexp.test(123)); // false console.log(regexp.test(2)); // true </script>
[-]
:方括号范围符-
<script> var regexp = new RegExp(/[a-z]/); // 表示a-z之间的任意一个字符都可以 console.log(regexp.test('a')); // true console.log(regexp.test('z')); // true </script>
[ ]
里面的^
表示取反
<script> var regexp = new RegExp(/[^a-z]/); // []里面的^表示取反的意思 console.log(regexp.test('a')); // false console.log(regexp.test(1)); // true </script>
*
: 重复零次或更多次
+
:重复一次或更多次
?
:重复零次或一次
{n}
:重复n次
{n,}
:重复n次或更多次
{n, m}
:重复n到m次
<script> var regexp = new RegExp(/^[a-z]{6}$/); // {}表示重复前面的字符多少次 console.log(regexp.test('aaaaaa')); // true console.log(regexp.test('a')); // flase </script>
<body> <input type="text"><span>请输入用户名</span> <script> // 正则表达式 var regexp = new RegExp(/^[a-zA-Z0-9_-]{3,6}$/); // {}表示重复前面的字符多少次 // 获取元素 var input = document.querySelector('input'); var span = document.querySelector('span'); input.addEventListener("blur", function () { if (regexp.test(input.value)) { span.style.color = 'green'; span.innerHTML = "用户名合法"; } else { span.style.color = 'red'; span.innerHTML = "用户名不合法"; } }); </script> </body>
预定义类指的是某些常见模式的简写方式
\d
:匹配0-9之间任意一个数字,相当于[0-9]
\D
:匹配除0-9之外任意字符,相当于[^0-9]
\w
:匹配任意字母,数字和下划线,相当于[A-Za-z0-9_]
\W
:匹配任意除字母,数字和下划线之外任意字符,相当于[^A-Za-z0-9_]
\s
:匹配空格(换行符,制表符,空格符等),相当于[\t\r\n\v\f]
\S
:匹配除空格之外任意字符,相当于[^\t\r\n\v\f]
replace()
方法可以实现替换字符串操作,用来替换的参数可以是一个字符串或是一个正则表达式
stringObject.replace(regexp/substr, replacement)
**/表达式/[switch]
**
switch 按照什么样的模式来匹配,有三种值。
g : 全局匹配
i :忽略大小写
gi :全局匹配,忽略大小写
<script> var text = '激情四射, 激情四射'; var text1 = text.replace(/激情/, '**'); console.log(text1); // **四射, 激情四射 var text2 = text.replace(/激情/g, '**'); console.log(text2); // **四射, **四射 </script>