我一直在努力在我的pg-promise图书馆中提出注册解决方案......
它实现了a formatting method,根据以下规则对字符串进行验证,以确定它是否为simple
字符串:
在以下情况下,字符串被定义为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
。
如何更改正则表达式以使其适用于这些特殊情况?
谢谢!
答案 0 :(得分:1)
如果将元字符^
(字符串的开头)和$
(字符串的结尾)添加到正则表达式中,它也会按预期的方式对大写单词起作用,并且还可以简化条件在输出:
const m = name.match(/^([a-z_][a-z0-9_$]*|[A-Z_][A-Z0-9_$]*)$/);
console.log(m ? 'simple' : 'complex');