javascript - 匹配字符串中的独占搜索组

标签 javascript regex

我一直在努力在我的 pg-promise 中找到一个 reg-ex 修复程序。图书馆...

它实现了 a formatting method它根据以下规则对字符串进行验证,以确定它是否是简单字符串:

在以下情况下,字符串被定义为simple:

  • 它是一个大小写相同的单个单词,没有空格
  • 它可以包含下划线,甚至可以以下划线开头
  • 它可以包含数字和 $,但不能以这些开头

这些基本上是确定 SQL 别名何时需要用双引号括起来的规则。

所以如果我隔离测试逻辑:

const m = name.match(/[a-z_][a-z0-9_$]*|[A-Z_][A-Z0-9_$]*/);

console.log(m && m[0] === name ? 'simple' : 'complex');

它在所有情况下都通过了测试,除非我们先有下划线,然后是大写字母,如下所示:_A__ABC。同时,它适用于 _a__abc

如何更改正则表达式以使其也适用于这些特殊情况?

谢谢!

最佳答案

如果您将元字符 ^ (字符串开头)和 $ (字符串结尾)添加到正则表达式中,则它对于大写单词也将按预期工作,并简化输出条件:

const m = name.match(/^([a-z_][a-z0-9_$]*|[A-Z_][A-Z0-9_$]*)$/);

console.log(m ? 'simple' : 'complex');

关于javascript - 匹配字符串中的独占搜索组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48360463/

相关文章:

php - 匹配 CSS 类名的正则表达式

javascript - 根据特定值拆分字符串,但保留分隔符,但这样做时不要将它们附加到任何东西上

javascript - 启用一个单选按钮组的单选按钮并在选择时禁用另一单选按钮组

javascript - 如何在没有蓝色边框选项卡焦点的情况下使用 Polymer 处理输入?

javascript - 声明变量和定义变量有区别吗

javascript - 使用正则表达式分隔单词

javascript - string.length 是否在调用 string.length 时计算长度

javascript - 验证单选按钮被选中

php - 如何从 HTML 注释标签中删除缩进或空格?

php - 如何替换字符串中 {} [] () 大括号之间的所有内容?