Regex 如何使用javascript';jsni的正则表达式?
这里也提出了同样的问题: ,但我不能让JSNI工作 这是将用于测试电子邮件的正则表达式的字符串:Regex 如何使用javascript';jsni的正则表达式?,regex,gwt,jsni,Regex,Gwt,Jsni,这里也提出了同样的问题: ,但我不能让JSNI工作 这是将用于测试电子邮件的正则表达式的字符串: "^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$" 它会给我错误。请告诉我犯了什么错误,谢谢。为什么要将JSNI用
"^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$"
它会给我错误。请告诉我犯了什么错误,谢谢。为什么要将JSNI用于正则表达式?。Gwt已经有了处理这些问题的类 我会使用
com.google.gwt.regexp.shared.regexp
,它的特性类似于Javascript的regexp
使用gwtcom.google.gwt.regexp.shared.regexp
您有许多优点:
- 不必处理JSNI,保存语法错误
- 使您的代码可测试,因为RegExp可以在JVM中使用
- 让实现转义字符串或其他内容
- 性能将是相同的
//注意,您必须双重转义\
RegExp r=RegExp.compile(^([^()[\]\\\\\\\,;:\\s@\\\\]+(\\.[\\]\\\\,;:\\\\\\\\\\\[\\\\]+)*)(\\\[[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\.[0-9]{1,3}\\\\\\\\\\\\\\\\\\\\\\\\\\\.[[0-9]{1,3\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
如果(r.test)test@domain.com")) {
}否则{
}
无论如何,如果您仍然想按照自己的方式工作,为了使代码正常工作,您应该在返回java之前对字符串进行转义,而不是在您试图执行的位置,而且您的JSNI块语法也不正确,请注意/*-{}-*/
而不是/-*{}-/
。你不需要“g”标志
validate("test@domain.com",reEmail());
private native String reEmail() /*-{
return "^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$";
}-*/;
private native boolean validate(String value, String regexp)/*-{
return new RegExp(regexp).test(value)
}-*/;
验证(“test@domain.com“,重新邮寄());
私有本机字符串reEmail()/*-{
返回“^([^()[\]\\\\\,;:\\\\\\\\\\\\\\\\\\\\\\,;:\\\\\\\\\\\\\\\\\\\\\\”)(\\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.\\\\\\\\\\\\\\\\\\\\\].]);([a-zA Z-0-9]++\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
}-*/;
私有本机布尔验证(字符串值、字符串regexp)/*-{
返回新的RegExp(RegExp).test(值)
}-*/;
private native String reEmail()/-*{
return "^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$";
}-*/;
private native boolean validate(String value, String regexp)/-*{
//escape special characters
var re=regexp.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, '\\$1').replace(/\x08/g, '\\x08');
return new RegExp(re,'g').test(value)
}-*/;
validate("test@domain.com",reEmail());
validate("test@domain.com",reEmail());
private native String reEmail() /*-{
return "^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$";
}-*/;
private native boolean validate(String value, String regexp)/*-{
return new RegExp(regexp).test(value)
}-*/;