测试字符串是否为Upper Camel Case格式,仅包含字母字符

问题描述 投票:1回答:1

我尝试测试以下规则是否适用于字符串:

  • 必须以大写字母开头。
  • 下一个字符可以是大写或小写格式。
  • 只允许使用以下字符:A-z

例如,一个字符串可以是StringCamelCaseString,但既不是string也不是Camel-Case-String,也不是String125。数字和特殊字符不得存在。

我在上一篇文章中找到了this answer

const isUpperCamelCase = (str) => {
  return /\b[A-Z][a-z]*([A-Z][a-z]*)*\b/.test(str)
}

我有以下测试套装试图测试上述功能。不幸的是,并非所有测试都通过

test('isUpperCamelCase', () => {
    expect(isUpperCamelCase('Button')).toBeTruthy()
    expect(isUpperCamelCase('GreenButton')).toBeTruthy()
    expect(isUpperCamelCase('GreenLargeButton')).toBeTruthy()
    expect(isUpperCamelCase('B')).toBeTruthy()

    expect(isUpperCamelCase('button')).toBeFalsy()
    expect(isUpperCamelCase('buttonCamel')).toBeFalsy()
    expect(isUpperCamelCase('Green-Button')).toBeFalsy() // => fail!
    expect(isUpperCamelCase('Button125')).toBeFalsy()
    expect(isUpperCamelCase('Green_Button')).toBeFalsy()
    expect(helpers.isUpperCamelCase('Green+Button')).toBeFalsy() // => fail!
    expect(helpers.isUpperCamelCase('green+Button')).toBeFalsy() // => fail!
})

如果我在我的字符串中包含特殊字符,例如(,)+-,那么当它应该评估为true时,函数会计算为false。发生这种情况是因为特殊字符之间存在匹配,但这不是我想要的行为。我怎么解决这个问题?

注意:请在答案中添加详细说明。谢谢! :)

javascript regex
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.