エスケープ#
小数点を含む値を検証する場合の書き方を考えます:
let str=12.24
// .は改行以外の任意の文字を表し、, したがってエスケープする必要があります
// /.
/\d+\.\d+/.test(str) //true
// /d+は1つ以上の数字に一致します
オブジェクトを使用して作成
//ここで渡されるのは文字列であり、リテラルではありません。
let reg=new RegExp("\d+\.\d+","g")
reg.test(str) //false
同じパターンがリテラルでは一致するが、オブジェクトでは一致しない理由は?
理由
console.log("/d"==="d") //true
console.log("//d"==="/d") //true
したがって、オブジェクトを作成する際には次のようにします:
//ここで渡されるのは文字列であり、リテラルではありません。
let reg=new RegExp("\\d+\\.\\d+","g")
reg.test(str) //false
例#
ウェブサイトを定義します:
let url="https://www.iyysxz.top"
log(/https?:\/\/\w+\.\w+\.\w+/.test(url))
例 2#
ユーザー名が最初の文字で始まり、数字で終わらない 15 文字以内であることを希望する場合。
<input name="user" type="text">
<srcipt>
const ele=document.querySelector("[name='user']")
ele.addEventLisitenr("keyup",function(){
this.value.match(/^[a-z]/w{3,14}$/)
})
</srcipt>