【问题标题】:How to use regex "test" in JavaScript [duplicate]如何在 JavaScript 中使用正则表达式“测试”[重复]
【发布时间】: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


【解决方案1】:

正则表达式应该是

let regexp = /^[A-Z]+$/

这样你告诉js在行的开始和结束时匹配这些字符。 你有它的方式,它只匹配第一个字母,所以测试返回 true。

【讨论】:

  • 非常感谢。在使用 Java 20 年后才开始接触 JavaScript,我不了解锚点要求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
  • 2023-03-23
  • 2013-04-04
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多