高度な定期的な例

方法を学ぶために、それは時々私は定期的に書き、私の悲惨なこと定期的にされているされ、自身がなぜ理解していない、態度を保持してみてください

しかし、私は本当に学びたい、ここで私は(基礎編は、私はほとんどの詳細のいくつかを書こうと、書いていない)彼の理解のすべての定期的な書き込みのために、一例で出てきます

私は、参照セクションを見ていきます<<定期的なガイドライン>>

複数の選択肢

縦型|別の代替が、|特に低い優先度には、括弧を使用することができ、彼を包ん

複雑な|シンプル書きます

グループexecを捕捉するために特別に設計

(2019年5月10日)スーパー強いが、私は今日見つけました

デフォルトの一致するエントリがによって得られた、追加の適合コンテンツパケットを介して、戻されます[]

let str = "aaabbb";
/*可以匹配到分组的内容*/
let reg=/(a+)(?:b+)/g;
let res = reg.exec(str);
console.log(res[1]);

let str = "cccddd";
/*可以匹配到分组的内容*/
let reg=/(c+)(d+)/g;
let res = reg.exec(str);
console.log(res[1]);

グッド入門情報リンク

置き換えます

第二个参数是函数
let url = "https://www.baidu.com?a=1&b=2";
let reg=/([^&#?+]+)=([^&?#+]+)/g;
let obj = {};
//$0  返回整体  $1返回第一个分组  $2 返回第二个分组
url.replace(reg, ($0,$1, $2) => obj[$1] = $2);
console.log(obj);

後方参照

\1 到\10
console.log('aaa bbbb ffffff 999999999'.match(/(\w)(?=\1\1\1)(\1)+/g));

反向引用的作用通常是用来查找或限定重复、查找或限定指定标识配对
([a-z])\1{2}
忽略分组  ?:
正向断言  ?=
反向断言  ?!
    test  判断return false
    exec  查看分组
    search  返回第一个匹配的索引 到不到 -1
    match  返回数组
    split
    replace
//找到重复的单词
const str = 'This is the theater you you have been to to';
str.replace(/\b([a-z]+)\s\1\b/ig,(match,...args)=>{
  console.log(args[0]);
})

(そしてより多くの情報を見つけるために)周り探し

环视,在不同的地方又称之为零宽断言,简称断言。
?=P   可定顺序
?!P   否定顺序
?<=P  肯定逆序
?<!P  否定逆序

console.log(/(http|ftp|svn|abc)ddd/g.test('httpddd'));

 定锚点

.*?  如果换行失败 改成 [\s\S]*?  

正の整数+小数

console.log(/^[+]?[1-9]\d*(?:\.\d)?$/.test('+2.1'));

歴覧

?=P肯定?!P否定

(?=A)[A-Z]

A、続いて(?= A)の位置、

[AZ]は文字AZのいずれかと一致します

合成

左から右に定期的に試合は周りを見回している(?=A)[A-Z]、試合は通常の文字を消費しないので、周りを探し、だけでなく、マッチAの理由

 let s1='abcd abcd abbdABCD';
    console.log(s1.match(/(?=a)[a-z]/g)); // ["a","a","a"]
字母序列后面跟着;
    let s1='aaaa;bbb;cccc;dddd;';
    console.log(s1.match(/[a-z]+(?=;)/g)); //["aaaa", "bbb", "cccc", "dddd"]
常规匹配   
    let s1 = 'notexefile1.exe';
    console.log(/.+(?=\.exe)/g.exec(s1)); //notexefile1

バリアントの使用

肯定变种

需求包含字母(不区分大小写),数字,6-16为密码
^(?=.*?[a-zA-Z])(?=.*?[0-9])[a-zA-Z0-9]{6,16}$
  讲解
  使用(?=.*?[a-zA-Z])限定后面的字符中至少有一个字母
    使用(?=.*?[0-9])限定后面的字符中至少有一个数字
    最后通过实际匹配正则[a-zA-Z0-9]{6,16}限定量词
    
否定变种

获取不是.exe后缀文件不含后缀的文件名 
正则:(.+)(?!\.exe)\.[^.]+$ 

肯定逆序 (?<=P)

js不支持,但是好像是用webpack的时候是支持的
需求:获取name参数的值 
正则:(?<=name=).+
示例很直白,前面必须是name=,然后获取其后面的数据  
      let s1 = 'name=Zjmainstay';
    console.log(/(?<=name=).+/g.exec(s1));// Zjmainstay

定期的なブロックの組み合わせ方法 - 文字、数字、特殊文字が含まれている必要があります

定期:^(?=.*?[a-z])(?=.*?\d)(?![a-z\d]+$).+$

分析:  (?=.*?[a-z])制限が手紙を持っている必要があります

(?=.*?\d)制限事項は、デジタル化しなければなりません

(?![a-z\d]+$)最初から最後までの制限は、すべての数字と文字にすることはできません

.+任意の文字が存在しない場合に定義することができます  ^し、$ 文字列の先頭と末尾には、定義されました

法の定期徐々に改善-特定のタグを除外するp/a/imgHTMLタグをマッチング、

定期:</?(?!p|a|img)([^> /]+)[^>]*/?>

以下のために、シンプルなラベルからスタート</p><br />、通常の書き込み:  </?[^>]*/?>

私たちは、タグ名がこの方法で得られる観察する必要があります。

无属性值:<p>           <([^>]+)
有属性值:<p class      <([^ ]+)
无属性值自闭合:<br/>   <([^/]+)
闭合标签:</p>          </([^>]+)>

定期的に取得します。

</?([^> /]+)

最後に、我々は排除するために必要なp/a/imgタグ名の前にマイナスを追加し、負シーケンシャル方式で周りを探し、ラベルを:  </?(?!p|a|img)([^> /]+)[^>]*/?>

正则减除查错法-匹配异常原因查找

<ul>
    <li class="item">item1</li>
    <li class="item">item2</li>
    <li class="item bug">item3</li>
    <li class="item">item4</li>
    <li class="item">item5</li>
</ul>

正则:<li class="item">(.*?)</li>

问题"item bug" 怎么解决

正则<li class="item[^"]*"

最终的正则<li class="item[^"]*">(.*?)</li>

正则练习题

https://www.zybuluo.com/Zjmainstay/note/709093

匹配个数为偶数且不能为空

/^(..)+$/

正则查找不包含某些字符串

^((?!不想包含的字符串).)*$

解释
(?!不想包含的字符串)   //是匹配位置
.是任意字符
表达式(?!hede).只执行一次
匹配0次或多次:((?!hede).)*

需求:匹配每行数据中以.jpg/.jpeg/.png/.gif结尾的图片名称(含后缀)

.+(?=\.(jpg|jpeg|png|gig)).+

......................................................................................................................................................................................................................................................................................................................................................................................................................

おすすめ

転載: www.cnblogs.com/fangdongdemao/p/10964189.html