Javascript 测试字符串是否为仅包含字母字符的大写格式
我尝试测试以下规则是否适用于字符串:Javascript 测试字符串是否为仅包含字母字符的大写格式,javascript,regex,Javascript,Regex,我尝试测试以下规则是否适用于字符串: 必须以大写字母开头 接下来的字符可以是大写或小写格式 仅允许以下字符:A-z 例如,字符串可以是string或CamelCaseString,但既不是string也不是CamelCaseString也不是String125。数字和特殊字符不得存在 我在以前的一篇文章中发现 const isUpperCamelCase = (str) => { return /\b[A-Z][a-z]*([A-Z][a-z]*)*\b/.test(str) }
- 必须以大写字母开头
- 接下来的字符可以是大写或小写格式
- 仅允许以下字符:
A-z
string
或CamelCaseString
,但既不是string
也不是CamelCaseString
也不是String125
。数字和特殊字符不得存在
我在以前的一篇文章中发现
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!
})
如果在字符串中包含特殊字符,如(,)+-
,则函数应计算为false
时,其计算结果为true
。这是因为特殊字符之间存在匹配,但这不是我想要的行为。我怎样才能解决这个问题
注:请在答案中添加详细说明。谢谢!:) 正则表达式需要锚来匹配字符串的开头和结尾,而不是
\b
。我们也要这样做:
/^[A-Z][A-Za-z]*$/
正则表达式需要锚来匹配字符串的开头和结尾,而不是
\b
。我们也要这样做:
/^[A-Z][A-Za-z]*$/
使用
/^[A-Z][A-zA-Z]*$/
@anubhava谢谢你,这似乎有效!如果您愿意,请发布答案!:)@AubHava也匹配<代码> CAMELCASE < /Calp>注意,我不考虑AB CAMELSE,但它可能与您的定义匹配。@ HunterMcMillen是一个有效的CAMEL案例字符串。考虑“PIN”,如“个人识别号”。您通常会将其作为“PIN”而不是“PIN”来处理。使用/^[A-Z][A-zA-Z]*$/
@anubhava感谢您的帮助!如果您愿意,请发布答案!:)@AubHava也匹配<代码> CAMELCASE < /Calp>注意,我不考虑AB CAMELSE,但它可能与您的定义匹配。@ HunterMcMillen是一个有效的CAMEL案例字符串。考虑“PIN”,如“个人识别号”。通常情况下,您会将这种情况视为“PIN”,而不是“PIN”。