Java 与 Javascript 中的正则表达式模式
Regex patterns in Java vs Javascript
我有英国邮政编码的java正则表达式模式:
^([a-zA-Z]){1}([0-9][0-9]|[0-9]|[a-zA-Z][0-9][a-zA-Z]|[a-zA-Z][0-9][0-9]|[a-zA-Z][0-9]){1}([ ])([0-9][a-zA-z][a-zA-z]){1}$
我也想在Javascript中使用它,但它不能在Javascript中正确验证邮政编码。Java和Javascript中的正则表达式模式之间有什么区别吗?
Java 和 JavaScript 正则表达式风格之间存在差异:JS 不支持后视。
正则表达式风格之间的差异列表可以在维基百科上找到。
但是,这不适用于您的情况。我推测您的 JS 测试字符串具有虚假字符,例如。CR/LF.
尝试使用不带锚点的正则表达式并检查测试字符串的长度。
你的正则表达式在 JavaScript 中和 Java 中一样好。下面是一个简短的例子,使用我编造的一些数据。
var regex = /^([a-zA-Z]){1}([0-9][0-9]|[0-9]|[a-zA-Z][0-9][a-zA-Z]|[a-zA-Z][0-9][0-9]|[a-zA-Z][0-9]){1}([ ])([0-9][a-zA-z][a-zA-z]){1}$/;
var testData = [
// valid
'A11 1AA',
'a1 1aa',
'Aa1a 1AA',
'aA11 1aa',
'Aa1 1AA',
// invalid
'aa1aa 1aa',
'@a11 1aa',
'a1aa 1aa'
];
for (var i = 0; i < testData.length; i++) {
if (testData[i].match(regex)) {
console.log(testData[i] + ' is valid.');
} else {
console.log(testData[i] + ' is invalid.');
}
}
奖金提示:
您可以简化一些正则表达式。{1}
是不必要的,您不需要将空间包装在 []
中。
^[a-zA-Z]([0-9][0-9]|[0-9]|[a-zA-Z][0-9][a-zA-Z]|[a-zA-Z][0-9][0-9]|[a-zA-Z][0-9]) [0-9][a-zA-z][a-zA-z]$
当然,您可以为捕获组保留所需的任何()
,但我不知道您是否正在使用这些。
相关文章:
- _water_glass的javascript正则表达式模式
- 需要正则表达式模式的帮助
- 正则表达式模式与各种端点匹配
- JavaScript 中 URL 的正则表达式模式
- Java 与 Javascript 中的正则表达式模式
- 将Javascript正则表达式模式转换为C++std::regex的规则
- 如何从字符串构造正则表达式模式
- 城市和州正则表达式模式
- 如何在字符串上组合JS replace()方法中的3个正则表达式模式
- JavaScript中的递归正则表达式模式
- 正则表达式模式匹配特定单词
- 什么正则表达式模式将从包含的外部HTML文本中提取内部HTML
- 将特定的正则表达式模式与我的字符串匹配
- 为电子邮件开发正则表达式模式
- 将HTML5正则表达式模式转换为JavaScript正则表达式
- 我的正则表达式模式不起作用
- 将字符串中的正则表达式模式替换为依赖于匹配项的替换字符串
- 数字、字母块的正则表达式模式匹配
- Q>javascript 正则表达式模式
- 验证字符串是否为正则表达式模式的开头