javascript - 使用正则表达式,如何检查倒数第二个字符是否为奇数

标签 javascript regex

我正在尝试了解正则表达式,但在基础知识方面遇到了一些问题。

我想检查字符串中的最后一个字符是否是“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] - 匹配05直接跟随lookbehind
  • | - 表示OR
  • ^表示字符串的开头
  • [05] - 匹配05
  • $ - 字符串结尾

这可以从以下内容看出:

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/

相关文章:

javascript - 如何找到具有未知值的数据属性的元素?

JavaScript 传递的是对象数组而不是数组数组

python - 使用python中的正则表达式从字符串中提取不同格式的日期

C# 替换多个 href 值

c# - 将 Notepad++ REGEX 转换为 .NET C#

python - 如何从文本中删除除单词和表情符号之外的所有内容?

javascript - 如何检查复选框是否在 Javascript 中被选中

javascript - 使用 Backbone Collection 时无法每次通过 Jquery 输出所有 JSON 项目

javascript - 希望社交媒体栏在滚动条上消失

python - pandas:使用正则表达式验证数据框单元格