试图找出一个以逗号分隔的字符串是否只包含数字
Trying to find out if a string with it's characters separated by commas contains only digits
如果字符串中包含除数字或逗号以外的任何字符,则函数应该返回"invalid input",如果它们都是数字,则应该输出"great job"
a,4,3,@
= "invalid input"…
1,4,6,5
= "great job" <===return from function
我试图了解正则表达式,但如果你可以使用另一种方法,那就好了。我对你如何解决它很感兴趣。我自己在网上也找不到答案。我搜索。我知道d
(regex)是数字,但我只是不知道现在如何将其应用于这种情况。
您可以使用一个简单的正则表达式来检查字符串是否只包含逗号分隔的数字:
/^('d+,)*'d+$/.test(s)
并像这样使用:
['1,2,3','123,5,223','1@32','12','12,',',23',','].forEach(function(s) {
document.write('<br>' + s + ' : ' + (/^('d+,)*'d+$/.test(s)? 'great job' : 'invalid input'));
});
假设数字可以有任意位数,并且数字之间只允许使用逗号;
您可以使用string .split(char)将字符串拆分为一个字符数组,例如:
'1,4,6,5'.split(',');
> [1, 4, 6, 5]
你可以使用一个正则表达式来检查这个字符是否是一个数字,并使用一个reducer来验证。
function valid(c) {
//using regex, return true if the character is valid, false if not
// or something like
return !Number.isNaN(+c);
}
'1,4,6,5'.split(',').reduce(function(acc, x) {
if valid(x) {
return acc;
} else {
return false;
}
}, true);
应该给你一个布尔值,你可以将它映射到你想要的输出字符串。Reduce的工作方式有点像循环,它一次传递一个累积值和数组的每个元素,初始值在这里的部分'},true);',所以只要正则表达式返回true,我们就继续返回相同的acc值,但如果我们得到一个无效的正则表达式,我们将累加器切换为false。注意,因为我们没有改变有效输入的累加器值,所以我们不必担心它会突然返回到"有效"状态。
您可以使用Array.prototype.every()
方法
return str.split(',').every(function(val) {
return parseInt(val) == val; // or any of the many other ways to check if a string is a number
});
帮助链接:
检查输入字符串是否包含数字
检查字符串是否只包含数字
我把这个拼凑在一起,希望能有所帮助!这是一个工作函数,正如你所要求的。function isOnlyNumsAndCommas(str) {
for (var i = 2; i <= str.length + 2; i += 2) {
var val = str.substring(i - 2, i - 1);
var isnum = val.match(/'d+/g);
if (!isnum) {
return ('invalid input');
break;
}
}
return('great job');
}
alert(isOnlyNumsAndCommas("@,4,3,3"));
For非For循环函数!
function isOnlyNumsAndCommas(str) {
if (str.match(/[^'d|,]/) === null) {
return('great job');
} else {
return('invalid input');
}
}
alert(isOnlyNumsAndCommas("a,4,3,@"));
function isValid(str){
var res = str.split(',').every(function(item){
return !isNaN(item) ? true : false;
});
return res ? "great job" : "invalid input";
}
console.log(isValid("1,2,4,5,@"))
var hasCommaSeparatedDigits = function(str){
var strArr = str.split(",");
var res = strArr.length ? "Great job!" : "Invalid Input";
for(var i in strArr){
var ch = strArr[i];
if(isNaN(ch)){
res = "Invalid Input";
break;
}
}
return res;
}
console.log(hasCommaSeparatedDigits("1,2,3,4"));
console.log(hasCommaSeparatedDigits("1,a,3,4"));
不需要拆分字符串,循环并检查每个部分的有效性。只需执行正则表达式检查是否存在除逗号以外的非数字(这里假设逗号可以出现在任何地方)
试题:
var str = "1,2,3,";
if(str.match(/[^'d|,]/) == null)
alert("great job");
else
alert("err");
- 如何检查两个字符串是否具有相同的字符,包括特殊字符
- 如何在 AngularJS 中检查字符串是否为空
- $.ajax 检查返回字符串是否为“错误”
- 检查字符串是否在字典内的数组中
- 检查字符串是否包含计算
- 验证字符串是否仅包含 javascript 中的某些字符
- 检查字符串是否等于一个单词和一个数字
- 如何检查字符串是否包含非英语字符列表
- 检查字符串是否包含数组中的某个字符串
- 检测字符串是否与格式说明符字符串匹配
- 如何在javascript中测试字符串是否包含带正则表达式的数字
- 如何检查字符串是否为回文JavaScript〔CLOSED!〕
- 检查字符串是否为有效的html标记
- 检查用户输入的字符串是否准确
- Javascript正则表达式,用于检查字符串是否为有效数字
- 使用AngularJS和Angular Translate如何检查字符串是否已被翻译
- If.else语句检查NaN和空字符串是否在JavaScript中不起作用
- Javascript Regex检查字符串是否包含不属于的单词
- 检查长度为5的子字符串是否在另一个字符串中(已重构)
- 如何检查 NS 字符串是否包含 javascript 函数