正则表达式似乎将一个字符串视为多个子字符串

时间:2015-10-15 11:12:59

标签: javascript regex

为什么以下代码返回“ZZZCamelCase”?这样的正则表达式是否检查字符串是否以小案例a-z开头和结尾?根据我的理解,str变量应该匹配这样的条件,所以控制台输出应该是“ZZZZZZZZZZZZ”,但显然它以某种方式打破了str,并检查了正则表达式的子串。为什么?如何告诉程序将“testCamelCase”视为一个字符串?

var str = "testCamelCase"; 
console.log(str.replace(/^[a-z]+/, 'Z')); // ZZZCamelCase

2 个答案:

答案 0 :(得分:2)

在这里,您要匹配一个或多个小写字母。那将是'测试'在你的字符串中,因为在那之后出现大写' C'。所以只有'测试'受到ZZZ'

的影响
console.log(str.replace(/^[a-z]+/, 'ZZZ')); // ZZZCamelCase

使用

str.replace(/[a-z]/ig, 'Z')

获得' ZZZZZZZZZZZZ'

答案 1 :(得分:2)

您忘了,正则表达式区分大小写。这意味着,[a-z]不会捕获整个字符串。 [a-zA-Z][\w]也是如此,包括0-9的数字。