ホームページ > ウェブフロントエンド > jsチュートリアル > js_javascript スキルで正規表現を動的に結合する 2 つの方法

js_javascript スキルで正規表現を動的に結合する 2 つの方法

WBOY
リリース: 2016-05-16 16:57:25
オリジナル
2672 人が閲覧しました

方法 1:

プロジェクトで作業しているときに、フォーム入力の正確性を確認するために js を使用する必要がある場合があります。この場合、js 正規表現を使用する必要があります。例: たとえば、月を確認する場合、形式は「yyyy-MM」です。この正規表現を書き出すことができない場合は、Google や Baidu を使用することもできます。 . インターネット上にはたくさんの例があります。ただし、この方法で js 正規表現を徹底的に書き込むと、新たな問題も発生します。設定ファイルの月の形式が変更されたらどうなるでしょうか? 「yyyyMM」または「yyyy_MM」に変更します...? ? js の正規表現を何度も変更することを覚えておく必要がありますか? ?

この時点で、次のことを考えなければなりません。構成ファイルを変更した後は、コードを変更する必要がなくなるので、どうすればよいでしょうか?

作者は js マニュアルを調べましたが、文字列を正規表現に変換する方法を見つけられませんでした。しかし、この問題は、スクリプトを動的に実行する eval(); メソッドを使用することで間接的に解決できます。したがって、より汎用性の高いコードを作成できます。

上記の例に対する一般的な解決策を以下に示します。

コードをコピーします コードは次のとおりです。

/**
* 月のフォーム入力が正当かどうかを確認します
* パターン: 月の形式文字列
* id: フォーム ID
*/
function validateMonth(pattern, id) {
var text = document.getElementById(id)
var monthStr = text.value; ;
var splitChar = "";
if(pattern.length > 6) splitChar = pattern.substring(4, pattern.length - 2);
eval("var re = /\d{ 4}" splitChar " \d{2}$/;");
//var re = /d{4}-d{2}$/;
if(monthStr.match(re) == null) {
alert("入力には [" pattern "] 形式を参照してください。 " "例: "2010" SplitChar "11" または "2010" SplitChar "03"");
text.value = "";
text.focus();
return false;
}
return true;
}

コードをコピー コードは次のとおりです。 >
/**
* 月のフォーム入力が正当かどうかを確認します
* パターン: 月の形式文字列
* id: フォーム ID
*/
function validateMonth(pattern, id) {
var text = document.getElementById(id);
var monthStr = text.value; 🎜>var splitChar = "";
if(pattern.length > 6) splitChar = pattern.substring(4, pattern.length - 2);
eval("var re = /\d{4} " splitChar " \d{2}$/;");
//var re = /d{4}-d{2}$/;
if(monthStr.match(re) == null) {
alert("入力には [" pattern "] の形式を参照してください。 " "例: "2010" SplitChar "11" または "2010" SplitChar "03"");
text.value = "";
text.focus();
return false;
}
return true;
}


注意すべき点が 1 つあります。スクリプト文字列を動的に記述して実行のために eval() メソッドに渡す場合、文字 '' はエスケープ

方法 2:


<script> <div class="codebody" id="code28825"> var n=new Array( ".htm ", ".html ", ".shtml "); <br>//var pattern1 = new RegExp( "\w \ " n[0] "$ ", "gi ") ; <br>var s1= "b.shtml "; <br>for(var i=0;i <n.length>{ <br>pattern1 = new RegExp( "\w \ " n[i] "$ ", "gi "); <br>result|=pattern1.test(s1); <br>alert(ブール値(結果)); <br></script>

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート