Método um:
Ao trabalhar em um projeto, você pode encontrar a necessidade de usar js para verificar a exatidão da entrada do formulário. Nesse caso, você precisa usar expressões regulares js. Por exemplo: Por exemplo, se você quiser verificar o mês, o formato é: 'aaaa-MM' Esta expressão regular é muito simples de escrever, você também pode usar o Google e o Baidu. . Existem muitos exemplos na Internet! No entanto, se a expressão regular js for escrita dessa forma, também trará novos problemas: E se o formato do mês do arquivo de configuração for alterado? Altere para 'aaaaMM' ou 'aaaa_MM'...? ? Precisamos nos lembrar de alterar as expressões regulares em js continuamente? ?
Neste momento temos que perguntar: Como podemos escrever expressões regulares dinâmicas? Depois de modificar o arquivo de configuração, não precisamos mais mexer no código?
O autor consultou o manual js e não encontrou uma maneira de converter a string em uma expressão regular. No entanto, esse problema pode ser resolvido indiretamente usando o método eval(); Escrevendo assim um código mais versátil!
Uma solução geral para o exemplo acima é postada abaixo:
Copie o código do código da seguinte forma:
/**
* Verifique se a entrada do formulário do mês é legal
* padrão: string de formato de mês
* id: id do formulário
*/
function validarMês(padrão, id) {
var texto = document.getElementById(id);
var mêsStr = texto.valor;
var splitChar = "";
if(padrão.comprimento > 6) splitChar = padrão.substring(4, padrão.comprimento - 2);
eval("var re = ///d{4}" + splitChar + "//d{2}$/;");
//var re = //d{4}-/d{2}$/;
if(mêsStr.match(re) == null) {
alert("Por favor consulte o formato [" + padrão + "] para entrada!/n" + "por exemplo /"2010" + splitChar + "11/" ou /"2010" + splitChar + "03/"");
texto.valor = "";
text.foco();
retornar falso;
}
retornar verdadeiro;
}
Copie o código do código da seguinte forma:
/**
* Verifique se a entrada do formulário do mês é legal
* padrão: string de formato de mês
* id: id do formulário
*/
function validarMês(padrão, id) {
var texto = document.getElementById(id);
var mêsStr = texto.valor;
var splitChar = "";
if(padrão.comprimento > 6) splitChar = padrão.substring(4, padrão.comprimento - 2);
eval("var re = ///d{4}" + splitChar + "//d{2}$/;");
//var re = //d{4}-/d{2}$/;
if(mêsStr.match(re) == null) {
alert("Por favor consulte o formato [" + padrão + "] para entrada!/n" + "por exemplo /"2010" + splitChar + "11/" ou /"2010" + splitChar + "03/"");
texto.valor = "";
text.foco();
retornar falso;
}
retornar verdadeiro;
}
Uma coisa digna de nota: ao soletrar dinamicamente uma string de script e passá-la para o método eval() para execução, o caractere '/' precisa ser escapado.
Método dois:
Copie o código do código da seguinte forma:
<roteiro>
var n = novo Array( ".htm ", ".html ", ".shtml ");
//var padrão1 = new RegExp( "//w+// "+n[0]+ "$ ", "gi ");
var s1= "b.shtml";
var resultado = falso;
for(var i=0;i <n.comprimento;i++)
{
padrão1 = new RegExp( "//w+// "+n[i]+ "$ ", "gi ");
resultado|=padrão1.teste(s1);
}
alerta(Boolean(resultado));
</script>