是否有一种简单的方法来获得正则表达式的反面,还是我需要构建一个与我所拥有的相反的新正则表达式?
例如,我使用这个正则表达式来确保我获得正确的货币值 - 没有$符号。
/^[0-9]+(\.[0-9][0-9]?)?$/
我现在要删除超出此模式的所有内容。例如,如果用户输入字母或尝试输入两个句点,例如7.50.6,我想删除不需要的字符。我该怎么做?
答案 0 :(得分:2)
我认为你是以错误的方式解决这个问题。首先,尝试以这种方式隐藏输入错误是一个坏主意。如果用户必须输入一个数字并且他们添加了一个额外的点,那么什么告诉你哪个是好的部分哪个是坏的?你最好告诉用户他们的输入有问题。
但通常情况下,您通过指定它的外观来使用正则表达式以及您希望使用捕获组保留哪些重要部分。
这是一个捕获组:([a-z0-9])@example.com
;这是一个非捕获组:(?:hello|hi)
。
如果是电话号码,重要的是数字,因此您可以捕获它们并接受多种形式的中间字符。这是一个简单的邮政编码:
([A-Z][0-9][A-Z]) ?([0-9][A-Z][0-9])
然后你所要做的就是组合捕获的组。如果存在,则不会捕获空间。
在MDN上查找更多示例。