方法 1:
プロジェクトで作業している場合、フォーム入力の正確性を確認するために js を使用する必要が生じる場合があります。この場合、js 正規表現を使用する必要があります。例: たとえば、月を確認する場合、形式は「yyyy-MM」です。この正規表現を書き出すことができない場合は、Google や Baidu を使用することもできます。 . インターネット上にはたくさんの例があります。ただし、この方法で js 正規表現を徹底的に書き込むと、新たな問題も発生します。設定ファイルの月の形式が変更されたらどうなるでしょうか? 「yyyyMM」または「yyyy_MM」に変更します...? ? js の正規表現を何度も変更することを覚えておく必要がありますか? ?
この時点で、次のことを考えなければなりません。構成ファイルを変更した後は、コードを変更する必要がなくなるので、どうすればよいでしょうか?
著者は js マニュアルを調べましたが、文字列を正規表現に変換する方法を見つけられませんでした。しかし、この問題は、スクリプトを動的に実行する eval() メソッドを使用することで間接的に解決できます。したがって、より汎用性の高いコードを作成できます。
上記の例に対する一般的な解決策を以下に示します。
次のようにコードをコピーします。
/**
* 月のフォーム入力が正当であるかどうかを確認してください
* パターン: 月の形式文字列
* id: フォームID
*/
関数 validateMonth(パターン, id) {
var text = document.getElementById(id);
var monthStr = テキスト.値;
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 + "] の形式を参照してください!/n" + "例: /"2010" + splitChar + "11/" または /"2010" + splitChar + "03/"");
text.value = "";
text.focus();
false を返します。
}
true を返します。
}
次のようにコードをコピーします。
/**
* 月のフォーム入力が正当であるかどうかを確認してください
* パターン: 月の形式文字列
* id: フォームID
*/
関数 validateMonth(パターン, id) {
var text = document.getElementById(id);
var monthStr = テキスト.値;
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 + "] の形式を参照してください!/n" + "例: /"2010" + splitChar + "11/" または /"2010" + splitChar + "03/"");
text.value = "";
text.focus();
false を返します。
}
true を返します。
}
注意すべき点が 1 つあります。スクリプト文字列を動的に記述して実行のために eval() メソッドに渡す場合、文字「/」をエスケープする必要があります。
方法 2:
次のようにコードをコピーします。
<スクリプト>
var n=new Array( ".htm ", ".html ", ".shtml ");
//var pattern1 = new RegExp( "//w+// "+n[0]+ "$ ", "gi ");
var s1= "b.shtml ";
var 結果 = false;
for(var i=0;i <n.length;i++)
{
pattern1 = new RegExp( "//w+// "+n[i]+ "$ ", "gi ");
結果|=パターン1.テスト(s1);
}
アラート(ブール値(結果));
</script>