我正在尝试了解正则表达式,但在基础知识方面遇到了一些问题。
我想检查字符串中的最后一个字符是否是“0”或“5”,但我还想检查倒数第二个字符(如果存在)是否为奇数.
如果重要的话,我正在尝试在 Javascript 中执行此操作以进行某些表单验证。我有以下正则表达式来满足检查最后一个字符并确保其为“0”或“5”的第一个条件
/([0|5]$)/g
但是如何正确添加第二个条件来查看倒数第二个字符是否存在并且是否为奇数?类似于以下内容...?
/([0|5]$)([1|3|5|7|9]$-1)/g
如果有人不介意在这里帮助我并向我解释他们的正则表达式的每个部分在做什么,我将非常感激。
最佳答案
我会选择/(?<=[13579]{1})[05]|^[05]$/
.
这使用了两个条件。一种是当字符串中至少有两个字符时检查倒数第二个位置是否存在奇数字符,另一种是检查单个字符串。
分解:
-
(?<=[13579]{1})
- 执行 positive lookbehind 恰好一个奇数字符 -
[05]
- 匹配0
或5
直接跟随lookbehind -
|
- 表示OR
-
^
表示字符串的开头 -
[05]
- 匹配0
或5
-
$
- 字符串结尾
这可以从以下内容看出:
var re = /(?<=[13579]{1})[05]|^[05]$/;
console.log(re.test('12345')); // 12345 should return `false`
console.log(re.test('12335')); // 12335 should return `true`
console.log(re.test('1')); // 1 should return `false`
console.log(re.test('5')); // 5 should return `true`
也可以在 Regex101 here 上看到。
关于javascript - 使用正则表达式,如何检查倒数第二个字符是否为奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49661528/