正则表达式替换为插入符号
RegEx replace with caret
为什么
var a = "1ab";
a = a.replace(/[^'d][a-z]/g, "");
删除"A"和"B"?我认为它应该只删除"b",因为"a"前面有一个我用 [^''d] 排除的数字。
谁能帮助我?
它会删除它们,因为您的字符类[^'d]
表示"任何不是数字的东西"。^
的意思是"不是",'d
的意思是"数字"。所以你的表达式的意思是"匹配任何不是数字后跟任何小写字母的东西",它匹配"ab"
.
若要仅删除前面没有数字的小写字母,使用捕获组可能最容易执行此操作:
a = a.replace(/(['d][a-z])[a-z]/g, "$1");
也就是说:匹配一个数字,后跟一个小写字母(作为一个组(,后跟一个小写字母(组外(,并将其替换为组的内容。如果要从"1abc"
中删除"c"
,请在最后一个[a-z]
后添加一个+
,例如:/(['d][a-z])[a-z]+/g
。
您的正则表达式说替换一个不是数字的字符,后跟一个没有任何东西的 a-z 字符,并替换它找到的所有匹配项。
在你的字符串 1ab 中,它将首先将a
匹配为不是数字,然后将b
匹配为 a-z,因此您的字符串中将留下"1"。
如果你想找到一个数字后面跟一个字母并提取它,我会建议这个:
var match = a.match(/'d[a-z]/);
if (match) {
var result = match[0];
}
您的正则表达式完全按照它所说的去做:
var a = "1ab";
a = a.replace(/[^'d][a-z]/g, "");
...............a....b
它用"替换了ab
如果您只想替换前面没有数字的字母,您可以执行以下操作:
a.replace(/([^'d])[a-z]/g, "$1");
............a.....b ......a
它用第一个匹配项"a"替换 ab
你想要的很可能是一个负面的回望,换句话说,正则表达式应该是/(?!<'d)[a-z]/g
的。这找到任何(小写(字符前面没有数字(我猜这是你想要的,因为你只希望删除 b(。
相关文章:
- 插入符号到底是什么
- 将插入符号位置移动到ContentEditable<DIV>
- 为更改的输入返回插入符号位置的逻辑
- 内容可编辑DIV单击/插入符号设置
- 在contentEditable元素中居中占位符插入符号
- 获取插入符号相对于行可见起点的位置
- JavaScript 插入符号位置
- 链接内的内容可编辑块,如何防止重定向,但让文本选择插入符号位置更改
- 如何更改文本区域中闪烁的光标/插入符号
- Caret函数没有'如果插入符号在最后一个位置,就不能正常工作
- TinyMCE微笑符号插件-更改插入的微笑符号的宽度
- 如何使用javascript获取&使用字符偏移量设置插入符号位置
- text使用shift键和箭头键时的区域插入符号位置
- Rangy和IE8-在段落末尾的元素后面放置插入符号
- HTML Texeare 插入符号控件使用左、右、下、上、主页和结束虚拟按钮
- 在插入符号位置获取DOM元素
- 单击时获取文本区域中插入符号的位置
- 正则表达式替换为插入符号
- 隐藏插入符号-插入点-输入栏-闪烁的垂直小栏
- 我如何检测一个表情符号插入事件从OS X字符查看器和iOS表情符号键盘在Javascript/Redactor