如何在逗号前检查字符串中的开括号或闭括号

How to check open or close parentheses in string before comma?

本文关键字:检查 字符串      更新时间:2023-09-26

我对文本字段有一个条件,即每个字符串在以逗号结尾之前都应该有开括号和闭括号?

示例:

valid text values-  stack(2),flow(2),over(4),temp(0) 
Invalid          -  stack(2),flow,over(4),temp(0)

因此,每个字符串在以逗号结尾之前都应该有()括号。如何检查这种情况,请告知。

在每个RegExp '([^,]+')出现之前计数()的数量,它应该等于comas的数量+1

以下是测试用例的工作解决方案:http://jsfiddle.net/c8t26/1/

function testCases(str){
    return (
    str.match(new RegExp("''([^,]+'')","g")).length  == str.split(",").length
    );
}

这是我的解决方案,用逗号分割字符串,然后用regexp过滤,然后与原始大小进行比较。

演示

var a = 'stack(2),flow(2),over,temp ';
var arr = a.split(',');
var temp = arr;
arr = arr.filter(function(el){
    var reg = new RegExp(/'('d+')$/);
    el = el.trim();
    return !!reg.test(el)
});
if(arr.length !== temp.length){
    alert(temp.length - arr.length + ' wrong');
}

过滤器支持

使用for循环遍历字符串的每个字符。使用一个标志,例如openParenthes,增加每个的计数(减少每个的计数)。如果你最终得到的不是0,它是无效的,如果你得到的是小于0的,它是有效的。在你的情况下,如果你不能打开多个括号,那么如果你的变量在循环的任何迭代中都大于1,它就是无效的。如果你也需要寻找昏迷,就在你发现a)检查[i+1]是否是逗号的时候。注意它是否是字符串的末尾,这样就不会出现越界错误。要么写一个特殊的大小写(if),要么在末尾添加一些伪字符(不是)。