否定字符没有按预期工作? ^
Posted
技术标签:
【中文标题】否定字符没有按预期工作? ^【英文标题】:Negated character not working as expected ? ^ 【发布时间】:2012-02-06 20:53:00 【问题描述】:我想让我的用户输入电话号码并选择他们自己的号码分隔方式(或不)。所以我想出了一个正则表达式:
var regex = /[^0-9 \/-\\\(\)\+]/;
在大多数情况下,它可以正常工作,但也有一些示例,例如 @
、:
、;
,但它并没有像我预期的那样工作。有人可以给我一些提示吗?
这是我的意思的example
testvar = '123@213';
var regex = /[^0-9 \/-\\\(\)\+]/;
if(regex.test(testvar) === true)
alert('Chars out of regex-range found'); // won't fire!
【问题讨论】:
您是说希望他们选择如何使用-
、+
和()
的任意组合来分隔它?所以字符串应该只包含 0-9、+/- 和 ()?
换句话说:除指定字符外的任何字符都应被禁止:/
-
`
()`+
都可以!
我在这里编辑了你的示例:jsfiddle.net/FYtSy/1这就是你要找的吗?
【参考方案1】:
从/
到\
有很长的路要走。如果没有,您在破折号前缺少一个斜线:
var regex = /[^0-9 \/\-\\\(\)\+]/;
【讨论】:
确实我忘记转义-
。谢谢你,就是找不到。【参考方案2】:
电话号码只使用数字,我会忽略用户格式,只保留数字
var phonenum=value.replace(/\D+/g,'');
【讨论】:
来自外国的用户可能会在其前面输入带有+
的国家/地区代码,并且可能会混淆它有什么问题,与分隔本地号码相同 - 在我看来它更加用户友好.谢谢你的话!以上是关于否定字符没有按预期工作? ^的主要内容,如果未能解决你的问题,请参考以下文章