【发布时间】:2023-04-06 14:26:01
【问题描述】:
我没有看到任何直接回答这个问题的相关消息,所以我将在下面发布。
我注意到 JavaScript 中的 regex.test() 函数的行为与 Java 中的“匹配”不同。
function doit(string)
{
var finalString = ""; // our result at the end.
var stringArray = string.split(/\s+/);
var arrayIndex = 0;
let regexp = /[A-Z]+/
// use shortcut evaluation (&&)
while (arrayIndex < stringArray.length && regexp.test(stringArray[arrayIndex]) )
{
finalString += stringArray[arrayIndex] + " ";
arrayIndex++;
} // end while
return finalString
}
如果我用“Hello World”调用“doit()”,函数会返回:“Hello World”。嗯?
我的 [A-Z]+ 正则表达式怎么可能?
Java 中的正则表达式 [A-Z]+ 仅表示大写字母并且按预期工作。在 Java 中,不会返回任何内容。
Java:
stringArray[arrayIndex].matches("[A-Z]+") // 没有按预期返回任何内容。
所以,我对如何在 JavaScript 中匹配正则表达式有点困惑。
提前感谢您帮助我澄清这一点。 :)
【问题讨论】:
-
您可能希望
/^[A-Z]+$/确保整个字符串都是大写的,而不仅仅是其中的一部分。 -
匹配整个字符串只需使用
^和$锚点。 -
谢谢大家!!!!!!完美运行。太棒了! :)
标签: javascript regex