Способ первый:
При работе над проектом вы можете столкнуться с необходимостью использования js для проверки корректности ввода формы. В этом случае вам необходимо использовать регулярные выражения js. Например: Например, если вы хотите проверить месяц, используйте формат: «гггг-ММ». Это регулярное выражение очень просто написать. Если вы действительно не можете его записать, вы также можете использовать Google и Baidu. . В Интернете много примеров! Однако если регулярное выражение js будет записано таким образом, это также принесет новые проблемы: что, если формат месяца в файле конфигурации изменится? Изменить его на «ггггММ» или «гггг_ММ»...? ? Нужно ли нам снова и снова забывать менять регулярные выражения в js? ?
На этот раз мы должны задаться вопросом: как мы можем писать динамические регулярные выражения? После изменения файла конфигурации нам больше не нужно трогать код?
Автор просмотрел руководство по js и не нашел способа преобразовать строку в регулярное выражение. Однако эту проблему можно решить косвенно, используя метод eval(); для динамического выполнения скрипта! Таким образом, мы пишем более универсальный код!
Общее решение приведенного выше примера опубликовано ниже:
Скопируйте код кода следующим образом:
/**
* Убедитесь, что ввод формы месяца является законным.
* шаблон: строка формата месяца
* идентификатор: идентификатор формы
*/
функция validateMonth (шаблон, идентификатор) {
вар текст = document.getElementById(id);
вар месяцStr = text.value;
вар SplitChar = "";
if(pattern.length > 6) SplitChar = шаблон.подстрока(4, шаблон.длина - 2);
eval("var re = ///d{4}" + SplitChar + "//d{2}$/;");
//var re = //d{4}-/d{2}$/;
if(monthStr.match(re) == null) {
alert("Для ввода используйте формат [" + шаблон + "]!/n" + "например, /"2010" + SplitChar + "11/" или /"2010" + SplitChar + "03/"");
текст.значение = "";
текст.фокус();
вернуть ложь;
}
вернуть истину;
}
Скопируйте код кода следующим образом:
/**
* Убедитесь, что ввод формы месяца является законным.
* шаблон: строка формата месяца
* идентификатор: идентификатор формы
*/
функция validateMonth (шаблон, идентификатор) {
вар текст = document.getElementById(id);
вар месяцStr = text.value;
вар SplitChar = "";
if(pattern.length > 6) SplitChar = шаблон.подстрока(4, шаблон.длина - 2);
eval("var re = ///d{4}" + SplitChar + "//d{2}$/;");
//var re = //d{4}-/d{2}$/;
if(monthStr.match(re) == null) {
alert("Для ввода используйте формат [" + шаблон + "]!/n" + "например, /"2010" + SplitChar + "11/" или /"2010" + SplitChar + "03/"");
текст.значение = "";
текст.фокус();
вернуть ложь;
}
вернуть истину;
}
Стоит отметить одну вещь: при динамическом написании строки сценария и передаче ее методу eval() для выполнения символ '/' необходимо экранировать.
Способ второй:
Скопируйте код кода следующим образом:
<скрипт>
var n=new Array( ".htm", ".html", ".shtml");
//var шаблон1 = новый RegExp( "//w+// "+n[0]+ "$", "gi");
вар s1 = "b.shtml ";
вар результат = ложь;
for(var i=0;i <n.length;i++)
{
шаблон1 = новый RegExp( "//w+// "+n[i]+ "$", "gi");
результат|=шаблон1.тест(s1);
}
предупреждение (логическое значение (результат));
</скрипт>