RegExp测试功能的异常行为

时间:2019-01-04 13:16:33

标签: 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], 
            capReg.test(text[i]), capReg.test(text[i + 1]), 
            alphaNumReg.test(text[i + 2])
        );
    }
}
splitWords('ABCOption');

在预期情况下 C,O,p,true,true,true 实际 C,O,p,true,false,true

请帮助我哪里做错了

3 个答案:

答案 0 :(得分:1)

这是获取数组并检查每个大写字母的方法:

array = ['A','B','C','D','E']

print len(array)

for i in range(0,len(array)):
   sheet2.cell(i+1,1).value = array[i]
   print cell
   sheet2.cell(i+1,1).value = cell

wb2.save(path2)

答案 1 :(得分:1)

以下代码对我有用,希望对您也有用。您只需要像下面一样更改正则表达式

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])
            );
        }
    }

答案 2 :(得分:0)

如果要逐个字符地检查,则不需要在正则表达式中使用g部分;当您不想在第一场比赛时停下时,使用g。只需将您的正则表达式替换为/[A-Z]/,它就会按预期运行。

此外,如果要基于大写字母将字符串拆分为单词,则可以直接使用模式进行操作。检查this SO question以查看一些解决方案