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

时间:2018-03-02 21:09:30

标签: javascript regex

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

  • 必须以大写字母开头。
  • 下一个字符可以是大写或小写格式。
  • 仅允许使用以下字符: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。发生这种情况是因为特殊字符之间存在匹配,但这不是我想要的行为。我怎么解决这个问题?

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

0 个答案:

没有答案