【问题标题】:Negative Version of given regex needed (JS)需要给定正则表达式的负版本(JS)
【发布时间】:2021-12-15 04:24:30
【问题描述】:

一次又一次的正则表达式... 可以请有人告诉我如何在此处使用给定的正则表达式进行负前瞻:https://regex101.com/r/kS6wUh/1

正则表达式如下所示:^\b[A-Z]+|_+?[A-Z]+

目标是检查给定字符串是否仅包含字符 A-Z 或 _

Invalid_TEXT (invalid)
all_in_small_invalid (invalid)
INVALID-DASH (invalid)
VALID_KEY (valid)
ANOTHER_VALID_KEY (valid)
 (empty --> invalid)

正则表达式应该匹配无效我当前返回的有效匹配项。

我不知道在我当前的版本中在哪里添加(?!...),因为我尝试过的所有选项都以出现正则表达式错误或计算所有内容而告终。我认为我的正则表达式没有正确的负前瞻结构。

【问题讨论】:

  • 除了下面检查不在集合中的字符的答案之外,要执行您最初想要的操作,您可以使用 ^[A-Z_]+$ 需要设置 line start ^ 和 end $ 以便它考虑整个字符串而不返回部分匹配

标签: javascript regex regex-lookarounds


【解决方案1】:

您只需测试字符串中的一个或多个字符是否不是集合[A-Z_],这是通过插入一个插入符号来完成的。所以[^A-Z_]。演示

const strs = `Invalid_TEXT
all_in_small_invalid
INVALID-DASH
VALID_KEY
ANOTHER_VALID_KEY
 (empty)`.split(`\n`);
 
strs.forEach(str => console.log(str, /[^A-Z_]/.test(str) ? `Not ok` : `OK`));
 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多