Javascript RegExp测试函数奇数行为

Javascript RegExp测试函数奇数行为,javascript,Javascript,我正在使用javascript RegExp检查字符是否为大写字母 function splitWords(text) { const capReg = /[A-Z]/g; const alphaNumReg = /[a-z0-9]/g; for (let i = 0; i <= text.length - 1; i++) { console.log( text[i], text[i + 1], text[i + 2],

我正在使用javascript RegExp检查字符是否为大写字母

function splitWords(text) {
    const capReg = /[A-Z]/g;
    const alphaNumReg = /[a-z0-9]/g;

    for (let i = 0; i <= text.length - 1; i++) {
        console.log(
            text[i], text[i + 1], text[i + 2], 
            capReg.test(text[i]), capReg.test(text[i + 1]), 
            alphaNumReg.test(text[i + 2])
        );
    }
}
splitWords('ABCOption');
函数拆分字(文本){
常数capReg=/[A-Z]/g;
常量alphaNumReg=/[a-z0-9]/g;

对于(设i=0;i这是获取数组并检查每个大写字母的方法:

const res=Array.from(“ABCOption”).map(e=>/[A-Z]/.test(e));

console.log(res)
这是获取数组并检查每个大写字母的方法:

const res=Array.from(“ABCOption”).map(e=>/[A-Z]/.test(e));

console.log(res)
下面的代码对我有用,希望对你也有用。你只需要像下面这样更改你的正则表达式

function splitWords(text) {
        const capReg = /^[A-Z]*$/;// /[A-Z]/g just replace your regexp and try ;
        const alphaNumReg = /^[a-z0-9]*$/;// /[a-z0-9]/g ;

        for (let i = 0; i <= text.length - 1; i++) {
            console.log(
                text[i], text[i + 1], text[i + 2],
                capReg.test(text[i]), capReg.test(text[i + 1]),
                alphaNumReg.test(text[i + 2])
            );
        }
    }
函数拆分字(文本){
const capReg=/^[A-Z]*$/;///[A-Z]/g只需替换您的regexp并重试;
常量alphaNumReg=/^[a-z0-9]*$/;///[a-z0-9]/g;

对于(让i=0;i下面的代码对我有用,希望对你也有用。你只需要像下面这样更改你的正则表达式

function splitWords(text) {
        const capReg = /^[A-Z]*$/;// /[A-Z]/g just replace your regexp and try ;
        const alphaNumReg = /^[a-z0-9]*$/;// /[a-z0-9]/g ;

        for (let i = 0; i <= text.length - 1; i++) {
            console.log(
                text[i], text[i + 1], text[i + 2],
                capReg.test(text[i]), capReg.test(text[i + 1]),
                alphaNumReg.test(text[i + 2])
            );
        }
    }
函数拆分字(文本){
const capReg=/^[A-Z]*$/;///[A-Z]/g只需替换您的regexp并重试;
常量alphaNumReg=/^[a-z0-9]*$/;///[a-z0-9]/g;

对于(设i=0;i如果要逐个字符检查,则不需要正则表达式中的
g
部分;
g
用于不希望在第一次匹配时停止的情况。只需将正则表达式替换为
/[A-Z]/
,即可正常工作


此外,如果要根据大写字母将字符串拆分为单词,可以直接使用模式。检查以查看一些解决方案,如果要逐个字符检查,则不需要正则表达式中的
g
部分;
g
在不想在第一次匹配时停止时使用。只需将正则表达式替换为
/[A-Z]/
,它将按预期工作


此外,如果您想根据大写字母将字符串拆分为单词,您可以直接使用模式进行拆分。查看一些解决方案

我无法很好地解释它,但我知道test()的行为不是预期的。我用于测试发生率。类似,但您要求字符串匹配regexp,而不是其他方式。我无法很好地解释它,但我知道test()的行为不是预期的。我用于测试发生率。类似,但您要求字符串与regexp匹配,而不是与AOTER匹配。对于这个伟大的解决方案,+1,但如果使用
const res=Array.from(text.map)(e=>e===e.toUpperCase(),它会更强大;
,因此它还可以识别外来大写字母,如¨。无法想象OP为什么会接受另一个答案。@如果您参考的是之前选择的答案,我猜代码与他自己的相同(除了工作正则表达式)和/或OP不知道ES6语法,也不知道如何在ES6 arrow函数中实现他的函数。如果你说的是我的,它包含一个工作正则表达式和一个链接,可以以比他将要做的更干净的方式实现拆分函数。对于这个伟大的解决方案+1,但如果使用
const res=Array.from(text).map(e=>e===e.toUpperCase());
,因此它还可以识别外来大写字母,如¨。无法想象OP为什么会接受另一个答案。@如果您参考的是以前选择的答案,我猜代码与他自己的代码相同(除了工作的正则表达式)和/或OP不知道ES6语法,也不知道如何在ES6 arrow函数中实现他的函数。如果你说的是我的,它包含一个工作正则表达式和一个链接,可以以比他将要做的更干净的方式实现拆分函数。