使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
Format input with regex to single character comma single character comma, etc
好吧,无可否认,我的正则表达式技能相当糟糕(我使用正则表达式备忘单构建了这个),在大多数情况下,这很好,但单个字符让我很沮丧。如果我将q w e r t y
粘贴到文本框中,我希望返回q,w,e,r,t,y,
,但它所做的是返回q,ue,rt,y
。
$("#niftyInput").bind('paste', function(e) {
var str = this.value.replace(/('w)['s,]+('w?)/g, '$1,$2').replace(/[^a-zA-Z0-9-,]/g, '');
if (str!=this.value) this.value = str;
});
Fiddle:http://jsfiddle.net/crunchfactory/435dc37o/
非常感谢!
要理解更大的上下文有点困难,但为什么不只是
$("#niftyInput").bind('paste', function(e) {
var str = this.value.replace(/['s,]+/g, ',').replace(/[^a-zA-Z0-9-,]/g, '');
if (str!=this.value) this.value = str;
});
或
$("#niftyInput").bind('paste', function(e) {
this.value = this.value.replace(/['s,]+/g, ',').replace(/[^a-zA-Z0-9-,]/g, '');
});
但这与正则表达式无关。
's+(?='w)
或
['s,]+(?='w)
试试这个。替换为,
。请参阅演示。
https://regex101.com/r/sJ9gM7/77
以下是正则表达式的作用:
(''w)[''s,]+(''w?)一个字符至少一个空白或逗号一个或零个字符
当你的输入框中有类似q w e r t y
的东西时,它是如何被捕获的:
'q'
是一个单词字符,与('w)
匹配,因此'q'
存储在$1
中' '
是空白,与['s,]+
匹配,请继续'w'
是一个字字符,与('w?)
匹配,因此'w'
存储在$2
中,匹配结束。
这就是为什么q w e r t y
返回成对的多个匹配(q,w)(e,r)(t,y),这就变成了q,ue,rt,y
。
有很多方法可以做你真正想做的事。由于regex在默认情况下是贪婪的,并且会匹配尽可能多的字符,因此您可以这样做:
('w+)['s,]*
('w+)
将捕获尽可能长的单词字符序列
然后,['s,]*
会将之后的任何空格和逗号视为"匹配"的一部分,而不是$1
捕获的一部分。
您可以使用:将空格替换为,
$("#niftyInput").bind('paste', function(e) {
var str = this.value.replace(/'s+/g, ',').replace(/[^a-zA-Z0-9-,]/g, '');
if (str!=this.value) this.value = str;
});
工作演示
相关文章:
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- Regex查找前面没有特定字符的字符
- 在javascript中使用单字符变量或函数名是否可以接受
- Regex表达式,用于替换两个字符(包括字符)之间的字符串
- 如何全局替换不在前面加[字符]的字符
- 删除错误.MongooDB + Express.传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符
- 确定 RICHT 文本编辑器中每个字符的字符样式
- JavaScript中(字符空间字符)或(空格字符空格)的表达式是什么
- 通过某些特殊字符或字符序列进行拆分来解析JSON输出
- 替换'和(JS中具有特殊字符的字符
- 替换前面或后面没有相同字符的字符
- 正则表达式:在字符或字符和行尾之间获取字符串
- 从占转义字符的字符数组创建字符串
- 在Javascript中使用regex或indexOf更改字符串中的特定字符(转义字符)
- Jquery字符超过字符,则显示正值
- Javascript Regex-用相同数量的另一个字符替换字符序列
- 如何匹配前面没有特定字符的字符序列
- 匹配后面没有另一个特定字符的字符
- Regex:两个或多个连续字符或字符序列
- Javascript验证限制表单字符的数量