当前位置: 首页 > 知识库问答 >
问题:

java和Javascript的通用正则表达式

冯霖
2023-03-14

我希望有一个通用的框架来编写一些正则表达式中的语法验证规则,这样我就可以在前端和后端都使用它们。我使用javascript作为前端,使用java作为后端。我想在前端做一个表单提交,但是在提交表单之前,我需要执行一些语法规则检查。当请求到达后端时,我希望评估相同的规则集。

我想把这些规则放在一个可以加载javascript和java代码的公共位置,这样我只需要更改这个公共位置的规则,它们就会反映到两个框架中。

共有1个答案

西门京
2023-03-14

您可以用某种众所周知的格式(.properties似乎是一个不错的选择)创建一个简单的文本文件,比如

name = ^[A-Z][a-z]+$
zip  = ^[A-Z][A-Z]\d+
etc

您也可以使用json,但在这种情况下,必须双转义表达式中的每个反斜杠。

此文件必须位于Web可读的位置。

 Properties regExps = new Properties();
 regExps.load(new FileInputStream(path));

// later on

 if (someInput.matches(regExps.getProperty('name'))...

在客户机中,fetch文件,进行一些简单的解析,并使用new regexp将每个字符串转换为一个regexp。示例:

function parseRegExps(data) {
    let obj = {}
    data.replace(
        /(\w+)\s*=\s*(.*)/g,
        ($0, $1, $2) => obj[$1] = new RegExp($2))
    return obj
}

let data = await fetch(...).then(r => r.text())
let regExps = parseRegExps(data);

// later on

if (someInput.value.match(regExps.name)) ...

当然,您应该避免只在一种语言中工作而在另一种语言中不工作的高级regexp特性,或者,如果必须的话,保持同一regexp的两种“风格”,例如emailjava=...emailjs=...

 类似资料:
  • 问题内容: 如何在JavaScript中使用支持Unicode的正则表达式? 例如,应该有类似的东西可以匹配Letters或Marks类别中的任何代码点(而不仅仅是ASCII的),并且希望具有这样的过滤器来标点,等等。 问题答案: ES 6的情况 即将发布的ECMAScript语言规范,版本6,包含可识别Unicode的正则表达式。必须使用u正则表达式上的修饰符启用支持。请参阅ES6中支持Unic

  • 正则练习 1.生成一个正则表达式regexObj 描述字符串规则的表达式,两种方式 直接量: /pattren/attrs(/规则/属性) 对象构造方式:new RegExp(pattern,arrtes) (/规则/属性) 2.regexObj.test(str) 测试正则表达式regexObj与指定字符串是否匹配 /10086/.test('10086') //true /10086/.tes

  • 问题内容: 我想使用Java正则表达式否定一组单词。 再说了,我想否定,,,。我写了一个正则表达式。 有些似乎不起作用。 问题答案: 试试这个: 如果不包含svn,cvs,nvs或mvc之一,则它将与文本匹配。 这是一个类似的问题:C#正则表达式要匹配不包含某个字符串的字符串?

  • 问题内容: 我正在尝试输入之间的内容,我的模式没有做正确的事,请帮忙。 下面是sudocode: 要求的输出: 之一 二 三 问题答案: 先行使用并在循环中使用,而不是: 看到它在线上工作:ideone 但是最好在这里使用split: 看到它在线上工作:ideone

  • 主要内容:正则表达式支持字符正则表达式(Regular Expression)又称正规表示法、常规表示法,在代码中常简写为 regex、regexp 或 RE,它是计算机科学的一个概念。 正则表达式是一个强大的字符串处理工具,可以对字符串进行查找、提取、分割、替换等操作,是一种可以用于模式匹配和替换的规范。一个正则表达式就是由普通的字符(如字符 a~z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的

  • 本文向大家介绍java常用正则表达式,包括了java常用正则表达式的使用技巧和注意事项,需要的朋友参考一下   "^/d+$"   //非负整数(正整数 + 0)   "^[0-9]*[1-9][0-9]*$"   //正整数   "^((-/d+)|(0+))$"   //非正整数(负整数 + 0)   "^-[0-9]*[1-9][0-9]*$"   //负整数   "^-?/d+$"