String字符串匹配javascript 正则表达式
什么是正则表达式
正则表达式是一种用来匹配、查找和替换文本的工具,它可以精确匹配一个或多个字符,也可以通过通配符匹配一类字符。在Javascript中,我们可以使用RegExp类来操作正则表达式。
正则表达式的基本语法
在 Javascript 中,正则表达式可以使用字面量或者RegExp类来创建。
使用字面量的方式:
var pattern = /pattern/flags;
使用RegExp类的方式:
var pattern = new RegExp('pattern', 'flags');
其中,pattern
指正则表达式模式,flags
为可选参数,用于指定正则表达式的修饰符,常见的修饰符有:i
(忽略大小写)、g
(全局搜索)、m
(多行模式)。
对于正则表达式的模式,它可以使用一些普通字符和一些特殊字符来匹配不同的内容。以下是常用的正则表达式元字符:
元字符 | 描述 |
---|---|
. | 匹配任意单个字符,除了换行符 |
\s | 匹配一个空白字符 |
\S | 匹配一个非空白字符 |
\d | 匹配一个数字 |
\D | 匹配一个非数字字符 |
\w | 匹配一个字母、数字或下划线 |
\W | 匹配一个非字母、数字或下划线字符 |
^ | 匹配字符串的开头 |
$ | 匹配字符串的结尾 |
* | 匹配前面的元素0个或多个 |
+ | 匹配前面的元素1个或多个 |
? | 匹配前面的元素0个或1个 |
{n} | 匹配前面的元素n次 |
{n,} | 匹配前面的元素至少n次 |
{n,m} | 匹配前面的元素至少n次,但不超过m次 |
[...] | 匹配方括号内的任何一个字符 |
[^...] | 不匹配方括号内的任何一个字符 |
String字符串匹配正则表达式方法:match、search和replace
在 Javascript 中,String对象提供了三个方法来支持正则表达式操作:match()
方法、search()
方法和replace()
方法。
match()方法
match()
方法用于在字符串中查找与正则表达式匹配的子串,如果找到则返回一个数组,否则返回null。该方法可以接受一个正则表达式对象或一个字符串作为参数。
var str = 'Hello world!';
var result = str.match(/world/);
console.log(result); // output: ["world", index: 6, input: "Hello world!", groups: undefined]
match()
方法返回的数组中包含了匹配到的子串、匹配到的子串在字符串中的起始位置(index)、原始字符串和具名捕获组等信息。
search()方法
search()
方法用于在字符串中查找与正则表达式匹配的子串,如果找到则返回第一个匹配子串的索引,否则返回-1。该方法可以接受一个正则表达式对象或一个字符串作为参数。
var str = 'Hello world!';
var index = str.search(/world/);
console.log(index); // output: 6
search()
方法只返回第一个匹配子串的索引,而不包含其他匹配信息。
replace()方法
replace()
方法用于在字符串中替换与正则表达式匹配的子串,该方法的第一个参数可以是一个正则表达式对象或一个字符串,第二个参数可以是一个字符串或一个函数。如果第一个参数是字符串,则只会替换字符串的第一个匹配项,如果第一个参数是正则表达式,则会替换所有与正则表达式匹配的子串。
var str = 'Hello world!';
var newStr = str.replace(/world/, 'JavaScript');
console.log(newStr); // output: "Hello JavaScript!"
使用函数作为第二个参数可以对每个匹配到的子串进行复杂的操作。
var str = 'Javascript is the best language!';
var newStr = str.replace(/(\b\w+\b)/g, function(word) {
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
});
console.log(newStr); // output: "Javascript Is The Best Language!"
以上代码中,正则表达式\b\w+\b
表示以单词边界为开始和结束的单词,使用函数对每个匹配到的单词进行首字母大写和其余字母小写的处理。
示例说明
示例1:匹配邮箱地址
var email = 'person@example.com';
var pattern = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+\.[a-zA-Z]{2,}$/;
if (pattern.test(email)) {
console.log('邮箱地址格式正确');
} else {
console.log('邮箱地址格式错误');
}
以上代码中,使用正则表达式/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+\.[a-zA-Z]{2,}$/
匹配邮箱地址。该正则表达式可以匹配以字母、数字、下划线或横杠开头,紧接着是一个@符号,然后是一个由字母、数字、下划线或横杠组成的域名部分,最后是一个由两个或更多字母组成的顶级域名部分。
示例2:解析URL参数
var url = 'https://www.example.com/index.html?key1=value1&key2=value2';
var params = {};
var pattern = /([^?&=]+)=([^&]+)/g;
url.replace(pattern, function(match, key, value){
params[key] = value;
});
console.log(params); // output: { "key1": "value1", "key2": "value2" }
以上代码中,使用正则表达式/([^?&=]+)=([^&]+)/g
匹配URL中的参数,把它们存储到一个对象params中,最后使用console.log()输出params对象。该正则表达式中,[^?&=]+
表示匹配任意不包含?
、&
和=
的字符,([^&]+)
表示匹配任意不包含&
的字符,/g
修饰符表示全局匹配。同时,使用replace()
方法将匹配到的参数的key和value依次存储到params对象中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:String字符串匹配javascript 正则表达式 - Python技术站