REGEX - 否定先行多行检查
REGEX - negative lookahead multiline check
我需要有关正则表达式的帮助,以查找组件中不包含 "maxlength" 属性的所有 <lightning:input/>
字段。
输入示例:
<lightning:input value="{!v.value}"
aura:id="field" name="name"
maxlength="50"
label="label"
required="true"
/>
我已经试过了 (<lightning:input)(?!.*(maxlength))
但它只检查输入的第一行(不包括新行)。我需要在 IntelliJ IDEA 搜索中使用它。
前瞻中使用的 .*
构造仅允许您检查一行中的后续子模式。但是,您可能不会在此处使用 (?s)
DOTALL 修饰符来允许 .
跨行匹配,因为 *
是贪婪的并且会在文档中尽可能多地匹配 [=15] =] 另一个节点文本中的子字符串。
因此,最安全的正则表达式方法是使用 [^<]*?
结构来匹配除 <
之外的任何 0+ 个字符(包括换行字符)尽可能少:
<lightning:input(?![^<]*?maxlength=)
注意我添加了 =
以确保 maxlength
子字符串后跟 =
。要将 maxlength
匹配为整个单词,请在其前面添加 \b
(单词边界)甚至 \s
(空格)。
我需要有关正则表达式的帮助,以查找组件中不包含 "maxlength" 属性的所有 <lightning:input/>
字段。
输入示例:
<lightning:input value="{!v.value}"
aura:id="field" name="name"
maxlength="50"
label="label"
required="true"
/>
我已经试过了 (<lightning:input)(?!.*(maxlength))
但它只检查输入的第一行(不包括新行)。我需要在 IntelliJ IDEA 搜索中使用它。
前瞻中使用的 .*
构造仅允许您检查一行中的后续子模式。但是,您可能不会在此处使用 (?s)
DOTALL 修饰符来允许 .
跨行匹配,因为 *
是贪婪的并且会在文档中尽可能多地匹配 [=15] =] 另一个节点文本中的子字符串。
因此,最安全的正则表达式方法是使用 [^<]*?
结构来匹配除 <
之外的任何 0+ 个字符(包括换行字符)尽可能少:
<lightning:input(?![^<]*?maxlength=)
注意我添加了 =
以确保 maxlength
子字符串后跟 =
。要将 maxlength
匹配为整个单词,请在其前面添加 \b
(单词边界)甚至 \s
(空格)。