我需要添加一些验证,它只允许包含空格的字符串中的一个大写字母。大写字母可以是字符串中的任何位置,但只能使用一次或根本不使用。
我打算将下面的解决方案作为单独的规则加入,但我有一点验证,并想知道我是否可以调整它以获得所需的结果:
// Validate Sentence Case
if(dataEntryCaseId.toString().match("4")){
var newValue = toTitleCase(value);
if(newValue != value){
for(var x = 1, j = value.length; x < j; x++){
if(value.charAt(x) != newValue.charAt(x)){
valid = false;
$("#text_10").attr({"value":$("#text_10").attr("value").replace(value.charAt(x), "")});
finalVal = finalVal.replace(value.charAt(x), "");
}
}
}
}
if(!valid){
for(var x = 0, j = styleNoteJsonData.styleGroupNote.length; x < j; x++){
if(styleNoteJsonData.styleGroupNote[x].styleName == styleGroupName){
alert(styleNoteJsonData.styleGroupNote[x].styleNote);
$(".styleNote").addClass("alertRed");
SendErrorMessage(styleNoteJsonData.styleGroupNote[x].styleNote);
}
}
答案 0 :(得分:7)
"this is A way to do it with regex".match(/^[^A-Z]*[A-Z]?[^A-Z]*$/)
正则表达式像这样崩溃......
字符串开头(^
)后跟非大写字母([^A-Z]
)零次或多次(*
)后跟可选(?
)大写字母({ {1}})后面跟不是大写字母([A-Z]
)零次或多次([^A-Z]
)后跟字符串结尾(*
)
$
正则表达式匹配所有大写字母,并返回一系列匹配项。数组的长度是有多少个大写字母,所以少于2个返回true。
答案 1 :(得分:2)
这个怎么样:
var string = "A string";
if(string.split(/[A-Z]/).length <= 2) {
// all good
}
else {
// validation error
}
用大写字母拆分字符串。如果长度为2,则只有一个上限。
答案 2 :(得分:1)
你可以尝试这样的东西:
function checkCapitals(InputString)
{
// Counter to track how many capital letters are present
var howManyCapitals = 0;
// Loop through the string
for (i = 0; i < InputString.length; i++)
{
// Get each character of the string
var character = InputString[i];
// Check if the character is equal to its uppercase version and not a space
if (character == character.toUpperCase() && character != ' ') {
// If it was uppercase, add one to the uppercase counter
howManyCapitals++;
}
}
// Was there more than one capital letter?
if (howManyCapitals > 1)
{
// Yes there was! Tell the user.
alert("You have too many capital letters!");
return false;
}
}
我希望我有所帮助。
答案 3 :(得分:0)
你能遍历每个字符以检查它是否等于ascii代码65到94吗?
var CharArr = "mystring".toCharArray();
var countCapsChars = 0;
for(var i =0;i<= CharArr.length;i++) {
if (CharArr[i].CharCodeAt(0) >= 65 && CharArr[i].CharCodeAt(0) <=94) {
countCapsChars++;
}
if (countCapsChars == 1 || countCapsChars == 0){
//pas
}
else
{
//fail
}