Javascript 如何完成regex语句以验证首字母
我希望使用正则表达式只验证首字母。首字母必须遵循以下格式:Javascript 如何完成regex语句以验证首字母,javascript,regex,Javascript,Regex,我希望使用正则表达式只验证首字母。首字母必须遵循以下格式: 首字母只能是大写字母 每个字母后面都必须有一个句号 每个字母周期对只能由1个空格分隔 幸运的是,前导空格和尾随空格都没有问题 我能够捕获大写字母句点对,但我很难阻止它接受小写字母,并且中间只有一个空格 var pattern = /[A-Z\s]+(.)/gi; 我希望在对“H.p.”这样的字符串进行测试时,它会返回true。当针对诸如“H.p.”、“H.p”之类的字符串进行测试时,它将返回false”,让我们看看您的需求,找出与每个
var pattern = /[A-Z\s]+(.)/gi;
我希望在对“
H.p.
”这样的字符串进行测试时,它会返回true
。当针对诸如“H.p.
”、“H.p
”之类的字符串进行测试时,它将返回false
”,让我们看看您的需求,找出与每个部分匹配的模式。没有特别的顺序
\s*
添加到开始(^
)和结束($
)锚点
/^\s*..\s*$/
/[A-Z]/
/[A-Z]\/
/^\s*[A-Z]\.([A-Z]\.)*\s*$/
坏了,这是
/
^\s*#字符串开头有零个或多个空格
[A-Z]\.\大写字母后跟句号
([A-Z]\)*#零次或多次重复空格+字母+句点
\s*$#字符串末尾有零个或多个空格
/
const rx=/^\s*[A-Z]\.([A-Z]\.)*\s*$/
常量测试=[“H.”、“H.”、“H.”、“H.P.”、“H.P.”、“H.P.”、“H.P.”、“H.P.L.”]
tests.forEach(str=>
console.info(str,'=',rx.test(str))
此表达式可能工作正常:
^\s*[A-Z]\.\s[A-Z]\.\s*$
或者,如果您有两个以上的字母要求,我们会添加一个具有上下界的量词:
^\s*[A-Z]\.(?:\s[A-Z]\.){1,2}\s*$
我们还可以继续限制空间的数量:
^\s{0,4}[A-Z]\.(?:\s[A-Z]\.){1,2}\s{0,3}$
const regex=/^\s*[A-Z]\.(?:\s[A-Z]\.){1,2}\s*$/gm;
const str=`H.P。
惠普。
惠普。
香港。
H.P.K.M。
惠普。
H.P`;
让m;
while((m=regex.exec(str))!==null){
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
m、 forEach((匹配,组索引)=>{
log(`Found match,group${groupIndex}:${match}`);
});
}
您提到的最直接的问题(不要接受小写)是因为您的模式上有一个i
标志,这使得它不区分大小写“每个字母-句点对只能由一个空格分隔”。您还需要转义点(使用\。
而不是
)因为
表示匹配任何内容,而\。
表示匹配文字点。很好,希望我想到使用非捕获组。将重复的首字母限制为2的原因是什么?