

对js有一定了解的编码人员应该听说过或读过一些知识: 可以使用js原生函数解决问题,尝试不使用正则表达式,后者将具有更好的性能.
当仅在字符串中的特定位置搜索值时,我们不需要使用正则表达式,因为这不仅会降低性能,而且可能会自我破坏.
打包类型为String的charAt(),slice(),substr(),substring(),indexOf()和lastIndexOf()之类的本地方法非常适合查找特定字符串的位置或进行判断是否存在.
对字符串进行操作. 在使用正则表达式之前,请考虑以下本机String方法. 它们有助于避免正则表达式的性能开销.
但是啊,一些更复杂的匹配仍然需要正则表达式. 例如,一些非常常见的需求:
只能输入输入注释: 字母,数字或下划线
<input type="text">
<script>
var pattern = /\W*/g;
var $input = document.querySelectorAll("input")[0];
$input.addEventListener('keyup', function(){
var val = $input.value;
$input.value = val.replace(pattern, '');
}, false);
</script>
门户: 演示
正则表达式就像您要匹配的字符集,例如,在abcdef字符中,您要匹配abc正则表达式使用实例,那么您要匹配的字符集是abc,则可以使用纯文本创建您的字符set,也可以使用正则表达式的特殊字符创建. 正则表达式的特殊字符通常可以视为一组字符,可以通过适当的组合来建立所需的字符集.


Paste_Image.png
创建正则表达式只有两种方法:
var partten = /<表达式正文>/<高级搜索标志>;
var partten = new RegExp("<表达式正文>", "<高级搜索标志>");
该系列文章通过示例说明了正则表达式的不同特殊字符的用法. 正则表达式中有36个特殊字符
1. 特殊字符: \
这是一个相对简单的字符,用于转义. 有某些语言基础应该知道“转义”. 由于某些原因,某些字符将用作保留字,而不能直接使用,例如正则表达式. +是保留字. 例如,如果要在abc + ef中匹配+,则不能直接使用+进行匹配,需要添加反斜杠\:
var str = "abc+ef"
var pattern = /\+/;
// 将+替换成d
var str = str.replace(pattern, "d");
console.log(str); // 输出abcdef
门户: 演示
2. 特殊字符: ^
|人物|匹配规则|

| : ---: | --- |
| ^ |匹配输入的开头. 如果多行标志设置为true,则它也与换行符后的位置匹配. 例如,/ ^ A /将不匹配“ A A”中的“ A”,但是将匹配“ An E”中的“ A”. 当“ ^”作为字符集模式中的第一个字符出现时,它将具有不同的含义. 本节有详细的介绍和示例|
补充说明: ^函数不仅用于匹配开头,还可以与[]配合使用,请参见以下两个示例:
// Exp01 ^...
var str1 = "abc";
var str2 = "#abc";
var pattern = /^a/; //匹配以a开头的 **单字符**
console.log(str1.replace(pattern, "A")); // 输出Abc
console.log(str2.replace(pattern, "A")); // 输出#abc
// Exp02 [^...]
var str3 = "abc";
var pattern = /[^a]/; //匹配第一个非a字符,这里没有使用全局搜索[匹配所有字符],所以匹配到第一个相匹配的字符后就不再继续匹配
console.log(str3.replace(pattern, 'B'));
门户: 演示
3. 特殊字符: $
|字符|匹配规则|
|: ---- ||-|
| $ |匹配输入的结尾. 如果多行标志设置为true,则它也与换行符前面的位置匹配. 例如,/ t $ /将与“ eater”中的“ t”不匹配,但将与“ eat”中的“ t”匹配. |
补充说明: $通常与^一起使用
// EXp01
var str1 = "abcddd";
var pattern = /d$/;
console.log(str1.replace(pattern, "D")); // 输出abcddD
// Exp02
var str2 = "abbbbc", str3 = "abcd";
var pattern = /^a[a-zA-Z]*c$/; // 匹配以a开头,d结尾的只含字母的字符串。不知道 * 含义的请看这面一个特殊字符的说明
console.log(str2.replace(pattern, "AD")); // 输出AD
console.log(str3.replace(pattern, "AD")); // 原样输出abcd

门户: 演示
4. 特殊字符: *
|字符|匹配规则|
|: ---- ||-|
||与上一个表达式匹配0次或更多次. 等效于{0,}. 例如,/ bo /将匹配“ Aood boooooed”中的“ booooo”和“ Abird warbled”中的“ b”,但不匹配“ Aunted gruntoo”中的任何内容. |
*它具有通配符的含义. 在许多语言中,这已经是程序员之间的共识,尤其是在CSS中. 尽管有些不同,但是存在通配符的概念,这对于记住*的含义非常有帮助(至少我认为是这样). 您可以以一种牵强的方式来考虑它: 通配符意味着它可以是任意的,并且可以考虑匹配任意多次. 尽管它牵强附会,但仍然可以帮助我记住它,而无需经常使用正则表达式.
var str1 = "abbbbbbbc", //b出现多次
str2 = "ac"; // b没有出现
var pattern = /^ab*/; // 匹配以a开头紧接0个或多个b的字串
console.log(str1.replace(pattern, "AB")); // 输出ABc
console.log(str2.replace(pattern, "AB")); // 输出ABc
门户: 演示
5. 特殊字符: +
|字符|匹配规则|
|: ---- ||-|

| + |与上一个表达式匹配一次或多次. 例如,/ a + /匹配“ candy”中的“ a”和“ caaaaaaandy”中的所有“ a”. |
第一个示例:
var str1 = "abbbbbbbc", //b出现多次
str2 = "ac"; // b没有出现
var pattern = /^ab+/; // 匹配以a开头紧接至少出现一个b的字串
console.log(str1.replace(pattern, "AB")); // 输出ABc
console.log(str2.replace(pattern, "AB")); // 输出ac
门户: 演示
6. 特殊字符: ?
|字符|匹配规则|
|: ---- ||-|
|?|与上一个表达式匹配0或1次. 例如,/ e?le?/匹配“天使”中的“ el”正则表达式使用实例,匹配“角度”中的“ le”,匹配“ oslo”中的“ l”. |
为什么?您是否使用过三元运算符Boolean? exp1: exp2;哪里?用来判断是非,而真和假可以与1和0关联,以便可以更有力地记住它?它匹配0次和1次. 另外,在正则表达式中,可以用来匹配出现次数的特殊字符是三个*,+和?. 如果您还记得*匹配任意多次,并且?匹配0或1次,然后剩下的就是匹配至少发生一次.
var str1 = "ac", //b没有多次
str2 = "abc"; // b出现1次
str3 = "abbc"; // b出现2次
var pattern = /^ab?c$/; // 匹配以a开头紧接仅仅出现0次或1次b,并且以c结尾的字串
console.log(str1.replace(pattern, "ABC")); // 输出ABC
console.log(str2.replace(pattern, "ABC")); // 输出ABC
console.log(str3.replace(pattern, "ABC")); // 输出abbc
门户: 演示
方法说明
替换门户网站
一个String方法,该方法执行一个字符串中的匹配项搜索,并将匹配的子字符串替换为替换字符串.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-278795-1.html
特别棒咯
然后苏联海军菜打出我舰奉命撞击你舰的警告之后才撞击的