ホームページ  >  記事  >  ウェブフロントエンド  >  JS正規表現の要点を分析

JS正規表現の要点を分析

小云云
小云云オリジナル
2018-01-30 17:20:181503ブラウズ

この記事では主に JS 正規表現の要点をお伝えします。以前 VueJS のソースコードを見ていて HtmlParser の部分を見たので、今まで見てきた正規表現の基礎知識が全く足りていないように感じました。ブログの情報を閲覧し、いくつかの JS をまとめました。正規表現の使いにくい部分は、あなたやあなたの SF 友達が読みやすいようにまとめられています。

定期的なグループ化

繰り返しのマッチング

繰り返しのマッチングについては、正規表現のグループ化機能をよく使用し、それを練習するために正規の一致する IP アドレスを使用します

一致させる必要があるのは 0.0.0.0 ~ 255.255.255.255 の間であると直感的に理解できます。 3 桁の数字 + ドットを 3 回照合し、次に 3 桁の数字を 1 回照合します。ここで説明する 3 桁の数字 + ピリオドは、式内のルールに変換できます。 {1,3}.、ルールを括弧で囲むと、グループ (d{1,3}.) になるため、IP アドレスに一致する正規表現は次のようになります。記述: (d{1 ,3}.){3}d{1,3}

別の方法では、次のように一致させることもできます: d{1,3}( .d{1,3}){3 }d{1,3}., 当我们把规则用括号包装后, 就变成了组: (d{1,3}.), 所以匹配IP地址的正则表达式可以写作: (d{1,3}.){3}d{1,3}

换种思路, 我们也可以这样匹配: d{1,3}(.d{1,3}){3}

拓展: 聪明的你可能已经想到, d{1,3} 匹配是有疏漏的. 在实际生产过程中, d{1,3} 可能匹配 999 这种数字, 他是一个错误的IP地址段. 这里贴上真实的IP地址正则匹配供大家参考: ((25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))).){3}(25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))) , 另人愉快的是, 它使用的分组策略仍然是不变的.

后向引用(反向引用)

我们考虑一个很特殊的情况, 当我们要匹配四个IP段相同的情况, 如 100.100.100.100 时, 重复匹配分组的策略失效了: 重复匹配分组 并不能保证匹配相同的数字 -> 这时候我们需要借助 后向引用 策略的力量了(少年, 你渴望力量吗2333, 戳我头像, 带你探索音乐与代码交织的文艺道路.)

后向引用在不同语言的正则表达式书写中, 有不同的语法, 我们讨论JS中最常见的一种, 形如: number 的后向引用, 其中, number 代表分组的序号.

给你一个简单的栗子, 瞬间就记住了, 假使我们要匹配重复的三位数字, 我们将匹配一个数字的规则标记为一个分组: (d), 重复匹配这个分组(第一个分组)的具体内容三次: (d)1, 这样就达到了目的.

我们很容易将重复匹配和后向引用分别开来: 前者是重复匹配相同的规则, 后者是匹配分组的具体内容.

默认的一些规则需要稍加理解并记住:

以上がJS正規表現の要点を分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。