我需要一个Regex来测试字符串是否符合以下规则:
_
)(例如HELLO_WOLRD
)测试值(有效和无效):
const validConstants = [
'A',
'HELLO',
'HELLO_WORLD',
];
const invalidConstants = [
'', // No empty string
'Hello', // All be Capitals
'Add1', // No numbers
'HelloWorld', // No camel cases
'HELLO_WORLD_', // Underscores should only be used between words
'_HELLO_WORLD', // Underscores should only be used between words
'HELLO__WORLD', // Too much Underscores between words
];
我尝试了^[A-Z]+(?:_[A-Z]+)+$
,但在A
和HELLO
中失败了。
答案 0 :(得分:5)
最后需要*
量词:
^[A-Z]+(?:_[A-Z]+)*$
^
(?:_[A-Z]+)*
将匹配零或更多_
和1个或更多大写ASCII字母的序列。
请参阅regex demo。
<强>详情:
^
- 字符串锚的开始[A-Z]+
- 1+大写ASCII字母(此处+
至少需要字母中的一个字母)(?:_[A-Z]+)*
- 匹配零个或多个序列的非捕获组:
_
- 下划线[A-Z]+
- 1个大写ASCII字母(此处+
表示字符串不能以_
结尾)$
- 字符串锚点结束