Regex仅包含数字和2个仅带空格的特殊字符
Regex for including only numbers and 2 special characters with space only
我正在为文本框准备正则表达式验证其中person只能输入0-9、*、#,每个都用逗号分隔且不重复。我准备了这个
if( ( incoming.GET_DTMF_RESPONSE.value.match(/[0-9*#]'d*$/)==null ) )
alert("DTMF WRONG"
其中传入是函数返回,GET_DTMF_RESPONSE是文本框名称
我在Regex不好。。它接受0-9和*以及#这很好但它也接受a-z我想让它成为非重复数字,没有字母表,没有特殊字符,除了#,*
让我知道如何进行
这个regex 怎么样
^(?!.*,$|.*'d{2,})(?:(['d*#]),?(?!.*'1))+$
对于用逗号分隔的每个值,我将其捕获到组1中,然后使用'1
(backreference)检查是否提前发生
^
标记字符串的开始
(?!.*,$|.*'d{2,})
是前瞻,只有当字符串不以,
结束或具有两个或多个数字时,它才会进一步匹配
在(?:(['d*#]),?(?!.*'1))+
中,单个['d*#]
在group 1
中被捕获,然后我们使用(?!.*'1)
来检查它在字符串的前面是否出现。'1
是指组1中的值。使用+
对每个这样的值重复此过程
$
标记字符串的结束
例如
用于输入
1,2,4,6,2
(?!.*,$|.*'d{2,})
检查字符串是否未以,
结尾,或者是否有两个或多个数字
上面的前瞻只检查模式,但与任何内容都不匹配。所以我们仍然处于字符串的开始
(['d*#])
捕获第1组中的1
(?!.*'1)
检查(不匹配)前方任何位置的1
。既然我们找不到,我们就继续
由于+
,我们将再次做同样的事情
(['d*#])
现在将捕获组1 中的2
(?!.*'1)
检查(不匹配)前方任何位置的2
。自从我们找到它以来,我们已经无法匹配文本
在这里工作
但您最好使用非正则表达式解决方案,因为它会更简单、更易于维护。。
var str="1,2,4,6,6";
str=str.replace(/,/g,"");//replace all , with empty string
var valid=true;
for(var i=0;i<str.length-1;i++)
{
var temp=str.substr(i+1);
if(temp.indexOf(str[i])!=-1)valid=false;
}
//valid is true or false depending on input
您可以使用这个:
^(?:([0-9#*])(?!(?:,.)*,'1)(?:,|$))+$
相关文章:
- 用于在Javascript中删除多个空格的特殊字符
- 将字符串从第二个空格切成特殊字符
- 正则表达式,用于除所有空格和一个特殊字符之外的所有内容
- JavaScript/jQuery:在特殊字符和关闭html标记后插入空格
- 如何使用 JavaScript 删除字符串中除数字和空格之外的所有特殊字符
- 正则表达式转义空格和特殊字符
- 特殊字符替换为空格
- 如何在javascript中用一个特殊字符开头的单词内的空格替换下划线
- JavaScript正则表达式,用于删除特殊字符和多余空格,同时保留逗号
- 带有特殊字符和空格的Javascript Regex
- 过滤javascript中除空格以外的特殊字符
- 可以't发送包含特殊字符的密码(用空格代替)
- Javascript Regex可以删除任何空格、特殊字符和数字
- 正则表达式:在空格上拆分一个字符串 + 每个要单独包含的特殊字符
- 如何删除特殊字符,但不删除空格
- Regex仅包含数字和2个仅带空格的特殊字符
- 仅用于数字的正则表达式(没有空格或特殊字符),使用ng-pattern
- Regexp表示不允许在结束/开始处使用特殊字符,但应该允许空格
- 如何从字符串中删除空格和特殊字符
- 通过弹出窗口转义url中的空格和特殊字符