レギュラー
1.コンセプト
通常:文字列操作の論理式です。実際、事前に定義されたいくつかの特別な代表文字は、文字列に対していくつかの検索および置換操作を実行するための通常の文字列を形成するために使用されます。
次に、定期的に作成します
- リテラル作成方法:var reg = / rule string / modifyr;
var reg = /web/ig;
console.log(reg);///web/gi
- コンストラクターの作成方法:var reg = new RegExp( 'rule string'、 'modifier');
var reg1 = new RegExp('web', 'ig');
console.log(reg1);///web/gi
3、修飾子
-
i:大文字と小文字を区別しない大文字と小文字を区別する
-
g:グローバルグローバルマッチ
var str = 'web123WEB456web789web000';
var reg = /web/gi;
var s = str.replace(reg, 'python');
console.log(s);//python123python456python789python000
4、文字列メソッド
- 置換:string.replace(regular、new character);新しい文字列を返します。元の文字列は変更されません
var str = 'web123WEB456web789web000';
var reg = /web/gi;
var s = str.replace(reg, 'python');
console.log(s);//python123python456python789python000
- 個別:string.split(通常);新しい配列を返します
var str = 'web123Web456web789web000';
var reg = /web/gi;
var arr = str.split(reg);
console.log(arr)//(5) ["", "123", "456", "789", "000"]
- 選択:string.match(通常);条件を満たす文字を選択し、新しい配列を形成して戻ります
var str = 'web123Web456web789web000';
var reg = /\d/ig; // 匹配数字
var arr2 = str.match(reg);
console.log(arr2);//(12) ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "0", "0"]
- 検索:string.search(regular);添え字が0の位置から照合を開始し、通常の文字と照合した後に添え字を返します
var str = 'web123Web456web789web000';
var reg = /\d/ig; // 匹配数字
console.log(str.search(reg));//3
5.取得方法(exec、test)
-
exec:regular.exec(照合する文字列);修飾文字の配列が毎回返されます
-
test:regular.test(一致する文字列);一致が成功したかどうかを返します。一致が成功した場合はtrueを返し、失敗した場合はfalseを返します。
*修飾子gが追加されていない場合、検索または一致は毎回0から開始されます。gが追加されている場合、一致は前の一致の次の位置から開始されることを意味します。一致結果がnullまたはfalseを返した後、次の一致0から再一致
* reg.lastIndex通常の試合が始まる現在の位置を取得します
var str = 'web123web456';
var reg = /\d\d\d/g;
console.log(reg.lastIndex); // 0
console.log(reg.exec(str)); // ["1", index: 3, input: "web123web456", groups: undefined]
console.log(reg.lastIndex); // 4
console.log(reg.exec(str)); // 2
console.log(reg.lastIndex); // 5
console.log(reg.exec(str)); // 3
console.log(reg.lastIndex); // 0
console.log(reg.test(str)); // true
console.log(reg.lastIndex); // 6
console.log(reg.test(str)); // true
console.log(reg.lastIndex); // 12
console.log(reg.test(str)); // false
console.log(reg.lastIndex); // 0
console.log(reg.test(str)); // true
6つのメタ文字
- ドット:改行を除くすべての文字に一致します
var str = '\n 123';
var reg = /./;
console.log(reg.exec(str));//[" ", index: 1, input: "↵ 123", groups: undefined]
- []:文字セット、照合する文字セット、文字セットにマークを追加、区切り、引用する必要はありません[^]:文字セット、照合する文字セット
var str = 'web123web456';
var reg = /[413]/ig;
console.log(reg.exec(str)); // 1
console.log(reg.exec(str)); // 3
- \ d:文字セット0-9の数字に一致== \ d \ D:数字以外に一致
var str = 'web123';
var reg = /\d\d\d/ig;
console.log(reg.exec(str)); // 123
var reg = /\D/ig;
console.log(reg.exec(str)); // w
// 银行卡密码 6位数字
var reg = /\d\d\d\d\d\d/;
var str = 'a12345';
console.log(reg.test(str));//false
- \ s:スペースに一致\ S:非スペースに一致
var str = 'web 123';
var reg = /\s/ig;
console.log(reg.exec(str)); // 3
var reg = /\S/ig;
console.log(reg.exec(str)); // 0
- \ w:数字、文字に一致、_ \ W:数字以外の文字、文字に一致、_
var str = '_w1.23*';
var reg = /\w/ig;
console.log(reg.exec(str)); // _
var reg = /\W/ig;
console.log(reg.exec(str)); // .
- \ b:単語の境界に一致\ B:単語以外の境界に一致
var str = 'you are a beautiful boy';
var reg = /\ba/ig; // 匹配a左边是边界的a
console.log(reg.exec(str)); // 4
var reg = /a\B/ig; // 匹配a右边不是单词边界
console.log(reg.exec(str)); // 4
- ^:$で始まるもの:で終わる
var str = '912345';
var reg = /^\d\d\d\d\d\d$/;
console.log(reg.test(str)); //true
console.log(reg.exec(str)); //["912345", index: 0, input: "912345", groups: undefined]
7、複数の文字
- a?:1または0を意味します
var str = '1web123';
var reg = /\d?/ig;
console.log(reg.exec(str));//["1", index: 0, input: "1web123", groups: undefined]
- a *:0個または複数の連続する文字に一致し、できるだけ多くの文字に一致することを意味します
var str = '123456web33333';
var reg = /\d*/;
console.log(reg.exec(str));//["123456", index: 0, input: "123456web33333", groups: undefined]
- a +:少なくとも1つ以上の連続する文字にできるだけ一致することを意味します
var str = 'webweb3444';
var reg = /\d+/;
console.log(reg.exec(str));//["3444", index: 6, input: "webweb3444", groups: undefined]
- a {n、m}:少なくともn回一致し、最大m回一致することを意味します
- a {n}:n回だけ一致することを意味します
var str = 'web1234567890';
var reg = /\d{3}/;
console.log(reg.exec(str)); // 123
- a {n、}:少なくともn回一致する
var str = 'web1234567890';
var reg = /\d{3,}/;
console.log(reg.exec(str)); // 1234567890
- a {n、m}:少なくともn回一致し、最大m回一致することを意味します
var str = 'web1234567890';
var reg = /^web\d{3,6}/;
console.log(reg.exec(str)); // web123456
8.その他のキャラクター
-
|:または
-
():グループの一致する値を取得するためのグループ:RegExp。$ 1RegExp。$ 2
var str = 'web1zweb2web3';
var reg = /web(1|5)(w|z)/;
console.log(reg.exec(str)); // ["web1z", "1", "z", index: 0, input: "web1zweb2web3", groups: undefined]
console.log(RegExp.$1);//1
console.log(RegExp.$2);//z
- (?:):非買収マッチ
var str = 'web1zweb2web3';
var reg = /web(?:5|2)/; // web后面是5或者是2的web
console.log(reg.exec(str));//["web2", index: 5, input: "web1zweb2web3", groups: undefined]
- (?=):肯定的な肯定的な事前チェック
var str = 'web123webdffff';
var reg = /web(?=\d+)/; // web后面必须跟数字
console.log(reg.exec(str));//["web", index: 0, input: "web123webdffff", groups: undefined]
- (?!):正負の事前チェック
var reg = /web(?!\d+)/; // web后面不跟数字的
console.log(reg.exec(str));//["web", index: 6, input: "web123webdffff", groups: undefined]
- (?<=):肯定的な事前チェックを逆にします
var reg = /(?<=\d+)web/; // web的前面是跟数字的web
console.log(reg.exec(str)); // 6
- (?<!):逆ネガティブ事前チェック
var reg = /(?<!\d+)web/;
console.log(reg.exec(str)); // 0
// 不能全是数字的组合
var str = '124456';
var reg = /(?!^\d+$)^[0-9a-zA-Z]+$/;
console.log(reg.test(str)); // false
// 必须是数字和字母的组合 不能全是数字、不能全是字母
var reg = /(?!^\d+$)(?!^[a-zA-Z]+$)^[0-9a-zA-Z]+$/;
var str = '1223a3344';
console.log(reg.test(str)); // false
一般的に使用される通常
1.チェックディジットの表現
-
番号:^ [0-9] * $
-
n桁の数字:^ \ d {n} $
-
少なくともn桁:^ \ d {n、} $
-
百万桁:^ \ d {m、n} $
-
ゼロおよびゼロ以外で始まる数値:^(0 | [1-9] [0-9] *)$
-
ゼロ以外から小数点以下2桁までの数値:^([1-9] [0-9] *)+(。[0-9] {1,2})?$
-
小数点以下1〜2桁の正または負の数:^(-)?\ d +(。\ d {1,2})?$
-
正、負、および小数:^(-| +)?\ d +(。\ d +)?$
-
小数点以下2桁の正の実数:^ [0-9] +(。[0-9] {2})?$
-
小数点以下1〜3桁の正の実数:^ [0-9] +(。[0-9] {1,3})?$
-
ゼロ以外の正の整数:^ [1-9] \ d * $または^([1-9] [0-9] ){1,3} $または^ +?[1-9] [0-9] $
-
ゼロ以外の負の整数:^-[1-9] [] 0-9 " $または^-[1-9] \ d $
-
非負の整数:^ \ d + $または^ [1-9] \ d * | 0 $
-
正でない整数:^-[1-9] \ d * | 0 $または^((-\ d +)|(0 +))$
-
非負の浮動小数点数:^ \ d +(。\ d +)?$または^ [1-9] \ d *。\ d * | 0. \ d * [1-9] \ d * | 0?.0 + | 0 $
-
正でない浮動小数点数:^((-\ d +(。\ d +)?)|(0 +(。0 +)?))$または^(-([1-9] \ d *。\ d * |0。\ d * [1-9] \ d *))| 0?.0 + | 0 $
-
正の浮動小数点数:^ [1-9] \ d *。\ d * | 0. \ d * [1-9] \ d * $または^(([0-9] +。[0-9] [ 1 -9] [0-9])|([0-9] [1-9] [0-9]。[0-9] +)|([0-9] [1-9] [0- 9]))$
-
負の浮動小数点数:^-([1-9] \ d *。\ d * | 0. \ d * [1-9] \ d *)$または^(-(([0-9] +。[ 0 -9] [1-9] [0-9])|([0-9] [1-9] [0-9]。[0-9] +)|([0-9] [1- 9] [0-9])))$
-
浮動小数点数:^(-?\ d +)(。\ d +)?$または^-?([1-9] \ d *。\ d * | 0. \ d * [1-9] \ d * | 0?.0 + | 0)$
二、チェック文字の表現
-
漢字:^ [\ u4e00- \ u9fa5] {0、} $
-
英語と数字:^ [A-Za-z0-9] + $または^ [A-Za-z0-9] {4,40} $
-
長さが3〜20のすべての文字:^。{3,20} $
-
26個の英字で構成される文字列:^ [A-Za-z] + $
-
26個の大文字の英字で構成される文字列:^ [AZ] + $
-
26個の小文字の英字で構成される文字列:^ [az] + $
-
数字と26個の英字で構成される文字列:^ [A-Za-z0-9] + $
-
数字、26個の英字、またはアンダースコアで構成される文字列:^ \ w + $または^ \ w {3,20} $
-
中国語、英語、アンダースコアを含む数字:^ [\ u4E00- \ u9FA5A-Za-z0-9 _] + $
-
中国語、英語、数字。ただし、アンダースコアやその他の記号は含まれません:^ [\ u4E00- \ u9FA5A-Za-z0-9] + $または^ [\ u4E00- \ u9FA5A-Za-z0-9] {2,20} $
-
^%& '、; =?KaTeX解析エラーなどの文字を入力できます:位置1の数学モードで関数' \ "'を使用できません:\ ̲" ̲:[^%&' 、; =? \ x22 ] + 12〜を含む文字の入力は禁止されています:[^〜\ x22] +
3つの特別な需要表現
-
メールサイト址:^ \ w +([-+。] \ w +)@ \ w +([-。] \ w +)。\ w +([-。] \ w +)* $
-
ドメイン名:[a-zA-Z0-9] [-a-zA-Z0-9] {0,62}(/。[A-zA-Z0-9] [-a-zA-Z0-9] {0 、62})+ /。?
-
InternetURL:[a-zA-z] +:// [^ \ s] *または^ http://([\ w-] +。)+ [\ w-] +(/ [\ w-。/? %&=] *)?$
-
携帯電話番号:^(13 [0-9] | 14 [5 | 7] | 15 [0 | 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9] | 18 [0 | 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9])\ d {8} $
-
電話番号( "XXX-XXXXXXX"、 "XXXX-XXXXXXXX"、 "XXX-XXXXXXX"、 "XXX-XXXXXXXX"、 "XXXXXXX"、 "XXXXXXXX):^((\ d {3,4}-)| \ d {3.4}-)?\ d {7,8} $
-
国内電話番号(0511-4405222、021-87888822):\ d {3}-\ d {8} | \ d {4}-\ d {7}
-
ID番号(15桁、18桁):^ \ d {15} | \ d {18} $
-
短いID番号(数字、文字xで終わる):^([0-9]){7,18}(x | X)?$または^ \ d {8,18} | [0-9x] {8、18 } | [0-9X] {8,18}?$
-
アカウント番号が有効かどうか(文字で始まり、5〜16バイトを許可し、英数字のアンダースコアを許可します):^ [a-zA-Z] [a-zA-Z0-9 _] {4,15} $
-
パスワード(文字で始まり、長さが6〜18で、文字、数字、アンダースコアのみを含めることができます):^ [a-zA-Z] \ w {5,17} $
-
強力なパスワード(大文字と小文字、数字の組み合わせが含まれている必要があり、特殊文字は使用できません。長さは8〜10です):^(?=。\ d)(?=。 [az])(?=。 * [AZ])。{8,10} $
-
日付形式:^ \ d {4}-\ d {1,2}-\ d {1,2}
-
1年の12か月(01〜09および1〜12):^(0?[1-9] | 1 [0-2])$
-
月の31日(01〜09および1〜31):^((0?[1-9])|((1 | 2)[0-9])| 30 | 31)$
-
お金の入力形式:
-
1.受け入れることができるお金の表現は4つあります:「10000.00」と「10,000.00」、および「ポイント」なしの「10000」と「10,000」:^ [1-9] [0-9] * $
-
2.これは、0で始まらない任意の数値を意味しますが、文字「0」が渡されないことも意味するため、次の形式を使用します:^(0 | [1-9] [0-9] *) $
-
3. 0または0で始まらない数値。先頭に負の符号を付けることもできます:^(0 |-?[1-9] [0-9] *)$
-
4.これは、0または0で始まらない負の数の可能性があることを意味します。ユーザーに0で始めさせます。お金を負にすることはできないため、負の符号も削除します。以下に追加したいのは説明です。小数部:^ [0-9] +(。[0-9] +)?$
-
5.小数点以下1桁以上である必要があるため、「10。」は渡されませんが、「10」と「10.2」は渡されます:^ [0-9] +(。[0 -9] {2})?$
-
6.このように、小数点以下2桁が必要であると規定しています。厳しすぎると思われる場合は、次のように実行できます。^ [0-9] +(。[0-9] {1,2 })?$
-
7.これにより、ユーザーは小数点以下1桁のみを書き込むことができます。ここで、数値のコンマを考慮する必要があります。これを行うことができます:^ [0-9] {1,3}(、[0-9] {3}) *(。[0-9] {1,2})?$
-
8.1〜3桁の後にコンマ+ 3桁を続けると、コンマはオプションになり、必須ではありません:^([0-9] + | [0-9] {1,3}(、[0-9] {3} )*)(。[0-9] {1,2})?$
-
備考:これが最終結果です。「+」を「*」に置き換えることができることを忘れないでください。空の文字列も使用できると思われる場合(奇妙な理由は?)最後に、次の場合はバックスラッシュを削除することを忘れないでください。関数Kongを使用すると、一般的なエラーはここにあります
-
xml文件:^([a-zA-Z]±?)+ [a-zA-Z0-9] + \。[x | X] [m | M] [l | L] $
-
漢字の正規表現:[\ u4e00- \ u9fa5]
-
2バイト文字:[^ \ x00- \ xff](漢字を含む、文字列の長さの計算に使用できます(2バイト文字は2としてカウントされ、ASCII文字は1としてカウントされます))
-
空白行の正規表現:\ n \ s * \ r(空白行の削除に使用できます)
-
HTMLマークアップの正規表現:<(\ S *?)[^ >>] >。?</ \ 1> | <。*?/>(インターネットで配布されているバージョンが悪すぎて、上記は一部にすぎません。複雑な場合ネストされたタグはまだ無力です)
-
最初と最後の空白文字の正規表現:^ \ s * | \ s * KaTeX解析エラー:未定義の制御シーケンス:位置4の\ sまたは(^ \ ̲s̲ *)|(\ s *)(行の先頭を削除する行の末尾の空白(スペース、タブ、フォームフィードなどを含む)、非常に便利な式)
-
Tencent QQ番号:[1-9] [0-9] {4、}(Tencent QQ番号は10000から始まります)
-
中国の郵便番号:[1-9] \ d {5}(?!\ d)(中国の郵便番号は6桁です)
-
IPアドレス:\ d +。\ d +。\ d +。\ d +(IPアドレスを抽出するときに便利)
-
IPアドレス:((?:( ?: 25 [0-5] | 2 [0-4] \ d | [01]?\ d?\ d)\。){3}(?: 25 [0-5 ] | 2 [0-4] \ d | [01]?\ d?\ d))