A. Asynchronous JavaScript And XHR✅B. Asynchronous jQuery And XML✅C. Asynchronous JavaScript And XML✅D. Advanced JavaScript And XML✅
AA. Invalid option
应用修改后的正则表达式后,AA. Invalid option 不会被匹配,因为 A 前面有另一个 A,而 A 到 D 的其他选项会被正常匹配。
匹配结果:
<span class="option-clickable" data-option="A">A. Asynchronous JavaScript And XHR<span class="correct-mark">✅</span></span>✅
<span class="option-clickable" data-option="B">B. Asynchronous jQuery And XML<span class="correct-mark">✅</span></span>✅
<span class="option-clickable" data-option="C">C. Asynchronous JavaScript And XML<span class="correct-mark">✅</span></span>✅
<span class="option-clickable" data-option="D">D. Advanced JavaScript And XML<span class="correct-mark">✅</span></span>✅
要确保正则表达式中的
A-D
字母前不能有其他字母,我们可以通过负向前瞻(negative lookbehind)来实现这一要求。负向前瞻会检查字母A-D
之前的内容,确保它前面没有其他字母(即不是字母字符)。修改后的正则表达式
解释
(?<![A-Za-z])
:这是负向前瞻(negative lookbehind),用于确保A-D
之前没有字母(不论大小写)。[A-Za-z]
:匹配任意字母。(?<!...)
:表示前面不能是指定的内容(在这里是任意字母)。([A-D])
:匹配字母A
到D
。\s*[.、)::]
:匹配字母后的符号,如.
、、
、)
、:
等,以及可能的空白字符。([^<\n]+)
:匹配选项的内容,直到遇到换行符或 HTML 标签开始字符<
。/m
:多行模式,确保^
和$
能够匹配每一行的开头和结尾。示例
假设有以下文本:
应用修改后的正则表达式后,
AA. Invalid option
不会被匹配,因为A
前面有另一个A
,而A
到D
的其他选项会被正常匹配。匹配结果:
总结
通过使用负向前瞻
(?<![A-Za-z])
,我们确保了A-D
之前不能有其他字母,从而符合您增加的约束条件。