Run Code  | API  | Code Wall  | Misc  | Feedback  | Login  | Theme  | Privacy  | Patreon 

js

//'main' method must be in a class 'Rextester'.
//openjdk version '11.0.5' 

import java.util.*;
import java.lang.*;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
class Rextester
{  
    public static void main(String args[]) throws Exception
    {
        
    String FUNCOES_BASE = montarFuncoesBase ();
    ScriptEngineManager factory = new ScriptEngineManager();
    ScriptEngine scriptEngine = factory.getEngineByName("JavaScript");

    scriptEngine.put("valor", "123456");        
        
    scriptEngine.eval(FUNCOES_BASE);
    Invocable invocable = (Invocable) scriptEngine;
    System.out.print((Boolean)invocable.invokeFunction("isNotEmpty"));
    }
    
    private static String montarFuncoesBase () {
        StringBuilder funcoes = new StringBuilder();
        
        funcoes.append(montarFuncaoIsNotEmpty());
        //funcoes.append(montarFuncaoIsNumeric());
        //funcoes.append(montarFuncaoIsNumericoSemZeroEsquerda());
        //funcoes.append(montarFuncaoIsTipoPessoaValido());
        funcoes.append(montarFuncaoIsDataValida());
        //funcoes.append(montarFuncaoIsAgenciaValida());
        //funcoes.append(montarFuncaoIsContaValida());
        
        return funcoes.toString();
    }
    
    private static String montarFuncaoIsNumeric () {
        return "function isNumerico () { var regex = new RegExp(/^\\d+$/); return regex.test(valor); }";
    }
    
    private static String montarFuncaoIsNotEmpty () {
        return "function isNotEmpty () { return valor.trim().length > 0 }";
    }
    
    private static String montarFuncaoIsNumericoSemZeroEsquerda () {
        return "function isNumericoSemZeroEsquerda () { var regex = new RegExp(/^\\d+$/); var isNumerico = regex.test(valor); regex = new RegExp(/^0\\d*$/); var iniciaComZero = regex.test(valor); return (isNumerico && !iniciaComZero); }";
    }
    
    private static String montarFuncaoIsTipoPessoaValido () {
        return "function isTipoPessoaValido () { return valor == 3 || valor == 6; }";
    }
    
    private static String montarFuncaoIsAgenciaValida () {
        return "function isAgenciaValida () { var regex = new RegExp(/^\\d{1,5}$/); return regex.test(valor);  }";
    }
    
    private static String montarFuncaoIsContaValida () {
        return "function isContaValida() { var regex = new RegExp(/^\\d{1,13}$/); return regex.test(valor); }";
    }
    
private static String  montarFuncaoIsDataValida () {
        StringBuilder function = new StringBuilder()
        .append("function isDataValida () {")
        .append("    var regexDate = /^(\\d{4})(\\d{2})(\\d{2})$/;")
        .append("    var regexDateTime = /^(\\d{4})(\\d{2})(\\d{2})\\s*(\\d{2})(\\d{2})(\\d{2})$/;")
        .append("    if (new RegExp(regexDate).test(valor)) {")
        .append("        let parts = regexDate.exec(valor);")
        .append("        let date = new Date(parts[1], (+parts[2])-1, parts[3]);")
        .append("        if (date.getDate() == parts[3] && date.getMonth() == (parts[2]-1) && date.getFullYear() == parts[1]) {")
        .append("            return true; ")
        .append("       }")
        .append("   }")
        .append("    if (new RegExp(regexDateTime).test(valor)) {")
        .append("        let parts = regexDateTime.exec(valor);")
        .append("        let date = new Date(parts[1], (+parts[2])-1, parts[3], parts[4], parts[5], parts[6]);")
        .append("        if (date.getDate() == parts[3] && date.getMonth() == (parts[2]-1) && date.getFullYear() == parts[1] && date.getHours() == parts[4] && date.getMinutes() == parts[5] && date.getSeconds() == parts[6]) {")
        .append("            return true; ")
        .append("       }")
        .append("    }")
        .append("    return false;")
        .append("}");
        
        return function.toString();
//      return "function isDataValida () { var regex = new RegExp(/^\\d{8}(\\s\\d{6})?$/); return regex.test(valor);}";
    }
}
 run  | edit  | history  | help 0