Javascript和Java进行相同的验证

Javascript和Java进行相同的验证,java,javascript,regex,validation,grails,Java,Javascript,Regex,Validation,Grails,这正是我现在想要实现的东西 除了在Javascript和Java中使用相同的正则表达式之外,是否有其他方法可以使验证(密码/用户名规则)在Javascript和Java中等效 我可以使用正则表达式,但我更愿意使用更高级的东西。我记得曾经使用JQuery做过一次,很快还会再看一次。当然,如果我沿着这条路走下去,服务器端的验证将以不同的方式实现。只要服务器端的验证是正确的,这不是一个真正的问题,但是如果知道我在服务器端和服务器端都有完全相同的规则,那就好了 有什么建议吗 编辑: 我似乎记得Grai

这正是我现在想要实现的东西

除了在Javascript和Java中使用相同的正则表达式之外,是否有其他方法可以使验证(密码/用户名规则)在Javascript和Java中等效

我可以使用正则表达式,但我更愿意使用更高级的东西。我记得曾经使用JQuery做过一次,很快还会再看一次。当然,如果我沿着这条路走下去,服务器端的验证将以不同的方式实现。只要服务器端的验证是正确的,这不是一个真正的问题,但是如果知道我在服务器端和服务器端都有完全相同的规则,那就好了

有什么建议吗


编辑:


我似乎记得Grails对验证有很好的支持。我不是在使用Grails,而是在使用Groovy。在Grails之外,我是否可以使用一些依赖关系来获得类似的东西?

最好使用java将所有验证规则放在服务器端。不要忘记,这可能会变得复杂,或者通常需要来自服务器端的数据,例如唯一用户名。然后,您可以让js使用ajax调用服务器端的特定服务,这些服务对输入的内容调用验证规则,并在表单上输出任何通知

如果您的验证规则是次要的,比如必填字段,那么只需将其放在js上,并在您的持久性层中具有不可为空的字段

编辑-评论

这个回答的目的是指出验证应该存在于后端,以始终确保处理的数据是正确的,无论是否在前端验证。在后端,可以访问前端不可用的数据,并且在一个地方具有复杂性,这将处理数据(例如存储数据)并可能重用逻辑(例如其他地方使用的api库)

如今,这一点也更为重要,因为后端通常位于提供API的完全独立的层/部署/微服务上

在前端,可以镜像验证,但通常我们只添加简单的验证。在前端进行验证的主要原因是为了节省网络呼叫和后端处理(例如,不需要打电话检查密码长度或发送会失败的错误数据等),并提供更好的用户体验(例如,没有理由让用户填写包含20个字段的表单,并等待来自服务器的长消息,每个字段都有错误等)。
逻辑应该编写一次,并且能够在一个地方轻松更新。

如您所知,通常的方法是在服务器端“镜像”客户端验证——例如,在客户端上进行状态验证,以及在模型中进行不可为空的字段。或者两端都写相同的正则表达式。在一个地方,没有一种抽象的方式来按照您想要的方式制定规则

然而,我可以想出一些近似于你想要的选项

  • 在一个隐藏的输入字段中将正则表达式传递给客户机,只需编写JavaScript即可使用它对用户名和密码字段执行模式匹配
  • 使用更厚的框架,如JavaServerFaces。它只在服务器端生成JavaScript并处理验证,但它是一种抽象,只需编写一次代码。我没有数据支持这一点,但我感觉技术在过去几年中失去了很多动力。“圣杯”和“游戏”是同一理念的更现代、更流行的例子

希望有帮助。

验证需要后端流程。你想在没有任何后端服务器端代码的情况下实现用户名和密码的验证吗?不,显然后端验证优先。我只是想知道是否有人知道使用比正则表达式更容易使用的东西在两端获得相同规则的方法。正则表达式是可行的,但我能说什么呢,我很懒:P+1用于将正则表达式传递给Javascript。。。我想如果我走那条路,我会硬编码的。尽管如此,我还是想在前端尝试使用一些可用的工具,然后在服务器端执行相同或更多的验证。我很久以前(比如2年前)就使用jQuery来完成这类工作,我记得不必使用正则表达式。这就是我指的。但我还是要研究一下,因为我已经忘记了我到底做了什么。将所有验证规则放在服务器端真的是最佳实践吗?如果可能的话,我希望避免不必要的请求,所以我不认为在前端进行验证是个坏主意。当然,这并不能替代后端验证。@justin我想说,在这种情况下,最好的做法是在客户端和服务器端都进行验证。客户端是因为用户得到的反馈更快,服务器是因为用户可以在浏览器中禁用JavaScript。但是说“最佳实践”只是一种意见。好的,谢谢塞吉奥。我以“以防万一”的心态提出了这个问题。正如在中所说,我想答案是“不-只需在两端进行验证,并确保达到相同的规则”“。如果您将所有验证都放在后端,那么您将对发送到后端的AJAX请求施加很大压力,以验证用户输入,这对用户来说是不友好的,因为在等待后端响应以确认用户输入了有效输入时,用户的性能会受到影响。复制其他人所说的前端和后端应反映基本验证,后端是所有最终应被拒绝的内容的总括方案,并已成功绕过初始客户端验证。@bmjrowee这已经是很长一段时间了,可能应该编辑此答案以使其更精确和清晰。我同意,这主要是我的意图。