JavaScriptでの正規表現ベースの適用
16294 ワード
regular expression:RegExp
正規表現はtest()を検証として使用してもよいし、match()、exec()を取得として使用してもよい.
1.正規表現の作成
作成方法は2つあります.
正規表現は2つの部分からなり、メタ文字 および 修飾子
メタ文字:
単語メタ:出現回数を設定する
特殊なメタ文字:単一または組み合わせて特殊な意味を表す
普通のメタ文字:自分の意味を表す
二、修飾子:
メタ文字の詳細な適用
\
x|y
[ ]
いくつかの例を挙げます.
1. 有効な数値であることを確認
2.パスワードの検証
3. 実名の確認
4. メールボックスの検証
5. 身分証明書番号(具体的な照合は省市県各地のコード番号も結合する)
正規表現はtest()を検証として使用してもよいし、match()、exec()を取得として使用してもよい.
let str = "good good study , day day up!";
let reg = /\d+/; //
reg.test(str); //=>false
str = "2019-10-01";
reg.exec(str); //=>["2019",index:0,inputs:" "]
1.正規表現の作成
作成方法は2つあります.
//=> ( , )
let reg1 = /\d+/;
//=> : ,
let reg2 = new RegExp("\\d+");
正規表現は2つの部分からなり、メタ文字 および 修飾子
メタ文字:
単語メタ:出現回数を設定する
* //
+ //
? //
{n} // n
{n,} // n
{n,m} // n m
特殊なメタ文字:単一または組み合わせて特殊な意味を表す
\ // ( -> -> )
. //
( )
^ //
$ //
//
\d //0~9
\D // 0~9 ( )
\w // 、 、
\s // ( 、 、 )
\t // ( TAB : )
\b //
x|y //x y
[xyz] //x y z
[^xy] // x/y
[a-z] // a-z [0-9a-zA-Z_]===\w
[^a-z] // “ ”
() //
(?:) //
(?=) //
(?!) //
普通のメタ文字:自分の意味を表す
/hello/ // "hello"
二、修飾子:
/* :i-m-g*/
i =>ignoreCase //
m =>multiline //
g =>global //
/A/.test('lalala') =>false
/A/i.test('lalala') =>true
メタ文字の詳細な適用
^ $
let reg = /^\d/;
console.log(reg.test("hello")); //=>false
console.log(reg.test("2019hello"));//=>true
console.log(reg.test("hello2019"));//=>false
let reg = /\d$/;
console.log(reg.test("hello")); //=>false
console.log(reg.test("2019hello"));//=>false
console.log(reg.test("hello2019"));//=>true
//=>^/$ :
let reg1 = /\d+/;
//=>^/$ :
let reg2 = /^\d+$/;
//=> : (11 , 1 )
let reg = /^1\d{10}$/;
\
let reg = /^2.3$/;
console.log(reg.test("2.3")); //=>true
console.log(reg.test("2@3")); //=>true
console.log(reg.test("23")); //=>false
//=> ,
reg = /^2\.3$/;
console.log(reg.test("2.3")); //=>true
console.log(reg.test("2@3")); //=>false
let str = "\\d";
reg = /^\d$/; //=>\d 0-9
console.log(reg.test(str)); //=>false
reg = /^\\d$/; //=>
console.log(reg.test(str)); //=>true
x|y
let reg = /^18|29$/;
console.log(reg.test("18")); //=>true
console.log(reg.test("29")); //=>true
console.log(reg.test("129")); //=>true
console.log(reg.test("189")); //=>true
console.log(reg.test("1829")); //=>true
console.log(reg.test("829")); //=>true
console.log(reg.test("182")); //=>true
//--- x|y , , => :
reg = /^(18|29)$/;
console.log(reg.test("18")); //=>true
console.log(reg.test("29")); //=>true
console.log(reg.test("129")); //=>false
console.log(reg.test("189")); //=>false
//=> 18 29
[ ]
//1.
let reg = /^[@+]$/;
console.log(reg.test("@")); //=>true
console.log(reg.test("+")); //=>true
console.log(reg.test("@@")); //=>false
console.log(reg.test("@+")); //=>false
reg = /^[\d]$/; //=>\d 0-9
console.log(reg.test("d"));//=>false
console.log(reg.test("\\"));//=>false
console.log(reg.test("9"));//=>true
//2.
reg = /^[18]$/;
console.log(reg.test("1")); //=>true
console.log(reg.test("8")); //=>true
console.log(reg.test("18")); //=>false
reg = /^[10-29]$/; //=>1 0-2 9
console.log(reg.test("1"));//=>true
console.log(reg.test("9"));//=>true
console.log(reg.test("0"));//=>true
console.log(reg.test("2"));//=>true
console.log(reg.test("10"));//=>false
いくつかの例を挙げます.
1. 有効な数値であることを確認
/*
* 1. + - , [+-]?
* 2. 0-9 , 0 (\d|([1-9]\d+))
* 3. , + (\.\d+)?
*/
let reg = /^[+-]?(\d|([1-9]\d+))(\.\d+)?$/;
2.パスワードの検証
//=> 、 、
//=>6~16
let val = userPassInp.value,
reg = /^\w{6,16}$/;
let flag=reg.test(val);
function checkPass(val){
if(val.length<6 || val.length>16){
alert(' 6-16 !');
return;
}
let area=['a','b'....'_']; //=> 、 、
for(let i=0;i){
let char=val[i];
if(!area.includes(char)){
alert(' !');
return;
}
}
}
3. 実名の確認
/*
* 1. /^[\u4E00-\u9FA5]$/
* 2. 2~10
* 3. · (·[\u4E00-\u9FA5]{2,10}){0,2}
*/
let reg = /^[\u4E00-\u9FA5]{2,10}(·[\u4E00-\u9FA5]{2,10}){0,2}$/;
4. メールボックスの検証
let reg = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
//=> \w+((-\w+)|(\.\w+))*
//1. (1 )
//2. - . ,
5. 身分証明書番号(具体的な照合は省市県各地のコード番号も結合する)
/*
* 1. 18
* 2. X
*
* :
* :
* :
* => X
* =>
*
*/
//let reg = /^\d{17}(\d|X)$/;
//=> : , ,
let reg = /^(\d{6})(\d{4})(\d{2})(\d{2})\d{2}(\d)(\d|X)$/;
reg.exec("123456789012345678"); //=> ,