我尝试测试以下规则是否适用于字符串:
A-z
例如,字符串可以是String
或CamelCaseString
,但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
。发生这种情况是因为特殊字符之间存在匹配,但这不是我想要的行为。我怎么解决这个问题?
注意:请在答案中添加详细说明。谢谢! :)