键入时有条件地从字符串中删除特殊字符
Conditionally remove special characters from a string while being typed
我试图将一个函数附加到表单字段,以便-最好是当用户键入字段-我指定的特殊字符将被剥离出键入的文本。但是有一些条件:
- 开放,允许使用右括号
- 允许使用空格,除非是末尾的尾随空格或一行中的两个空格
我已经找到了几个如何替换字符串中的特殊或非单词字符的例子,但到目前为止还没有一个关于如何去掉我不想要的字符,或者如何仅在尾随空格时删除空格的例子。
请注意,我没有嫁给JavaScript或jQuery(反之亦然),但它需要一个或另一个。我也不喜欢在飞行中这样做,但这是更可取的选择-其他一些函数已经在下一个字段上发生,所以我宁愿在用户退出这个特定的文本框之前有适当的值。
我尝试像下面的例子一样使用多个替换,但它似乎不喜欢用什么替换字符(")。我也不确定如何编写尾随空格的条件。
var s1 = "I live on Hopper St.";
var s2 = s1.replace(/'./g, "");
这主要是为了自动纠正我们看到的三个主要问题:
- 用户输入带句号(St.)的道路名称或缩写
- 用户不小心按空格两次,导致双空格
- 用户不小心在末尾点击空格,导致尾随空格
这些值在冗长的业务流程中使用,将值传递给其他字段、创建文件夹等,因此像句号、双空格和尾随空格这样的东西都会在以后把工作搞得一团糟。我试图通过在第一个字段中消除这些问题来解决这些问题。
使用您提供的示例严格回答您的问题:
var s2 = s1.replace(/'s{2,}|'.|'s$/g, "");
这将删除任何包含两个或多个空格的序列、任何点和任何尾随空格。模式表达式的三个部分由|
(OR
)分隔,因此避免了对remove
的多次调用。您还可以以^'s
的形式添加前置空格的条件。
然而,这种方法是有风险的,因为:
- 在飞行中这样做会让用户认为你的应用程序出了问题(想象一下你自己是一个用户,一开始你可能会认为你的键盘出了问题)。你可以不考虑文本输入,在输入失去焦点后,在附近的标签中显示规范化值。无论你使用什么后端,这种类型的清理/消毒/规范化都应该加倍。客户端验证可以通过多种方式绕过。用户在文本字段中看到的内容并不重要,更重要的是您在冗长的业务流程中实际保存和使用的内容。
因此,为用户做一个正确的客户端验证,并为您做一个正确的服务器端验证。
相关文章:
- React 15使用空字符串删除输入值
- IE在将字符串转换为日期时从日期中删除4小时
- 从字符串末尾删除空白无效
- 如何使用javascript选择字符串的部分,添加html标记或删除部分
- 如何从字符串中删除除字母、数字、空格、感叹号和问号之外的所有内容
- JavaScript从字符串中删除尾随空格和句点
- 正在删除'<以及那些>'来自javascript中的字符串
- jQuery 2.1 |删除重复子字符串的源子字符串
- 停止JSON.parse()从JSON字符串数据中删除尾随零
- 删除一个“;从javascript中的字符串末尾
- 从JavaScript中的名称-值对字符串中删除值
- 如何使用javascript在html表中删除字符串
- 如何在字符串中的值之前删除字符串中的动态数据?/ 使用 Lodash 的 _.trimStart 与动态数据
- 如何使用Jscript | JQuery在textArea中获取插入的|删除的字符串的索引和长度
- 如何删除“"使用javascript从字符串中提取字符
- 如何比较两个字符串并删除jquery中的元素
- javascript字符串删除X位置的一个字符并添加到起始位置
- JSON 字符串删除字符
- Javascript字符串删除空格和连字符
- Javascript字符串:删除除数字和第一个"