正则表达式,用于将字符串中除“第一个字符”外的其他字符更改为“下划线”
Regular Expression for changing chars of the words in string to underscore except First char
我试图找到一个正则表达式,它修改包含下划线的字符串中的单个单词,除了第一个字符。
Example: This is a Test。=> a
我想出: (' w) ' w */g 导致 T我T 。但是我不知道如何把下划线放到合适的位置。
谢谢。
应该可以:
"This is a Test".replace(/'B'w/g, "_")
解释:替换每个单词字符,除非它前面有非单词字符
正确的版本应该是
var wordMatch = /'b('w)('w+)/g;
input.replace(wordMatch, function ($0, $1, $2) {
return $1 + (new Array($2.length)).join('_');
});
但是,这不适用于带有重音字符的单词,因为'w
只包含ASCII范围(a-z)并且包含下划线,严格地说,下划线不是单词字符。
一个更正确的版本应该用一组Unicode范围来代替'w
:
var latinRanges = "''u0041-''u005a''u0061-''u007a''u0100-''u01bf''u01c4-''u024f";
wordMatch = new RegExp("(?:^|[^" + latinRanges + "])([" + latinRanges + "])([" + latinRanges + "]+)", "g");
input.replace(wordMatch, function ($0, $1, $2) {
return $1 + (new Array($2.length)).join('_');
});
范围'u0041-'u005a
, 'u0061-'u007a
, 'u0100-'u01bf
和'u01c4-'u024f
包括扩展拉丁字母中的所有字符(基本形式,重音形式,大写和小写形式)。
你可以这样做,
> var s = 'This is a Test.'
> s.replace(/((?:^|'s)'w)('w*)/g, function(x,y,z) {return y+z.replace(/./g, '_')});
'T___ i_ a T___.'
((?:^|'s)'w)
regex捕获第一个单词字符以及前面的空格或行边界的开始。('w*)
捕获以下零个或多个单词字符。因此整个匹配由第一个功能参数
x
引用,然后第一个捕获组中的字符由y
引用,第二个捕获组中的字符由z
引用。现在整个匹配被,
-
y
->字符在第一个捕获组内。 - 和
-
z.replace(/./g, '_')
将用_
符号替换第二个捕获组中的每个字符。然后将最终结果与y
连接,形成最终的替换字符串。
-
您的正则表达式,正如您所说的,与单词相关联。要用_替换字母,请使用函数形参的replace变体:
var sentence = "Now is the time for all good men";
var cached = sentence.replace (/('w)('w*)/g,
function (_,initial, rest) {
return initial + rest.replace (/./g, '_');
});
相关文章:
- 正则表达式字母数字字符 - 允许连字符和下划线
- 为字符串中的某些字符添加下划线
- 如何在javascript中用一个特殊字符开头的单词内的空格替换下划线
- 将字符串中的特殊字符替换为_(下划线)
- 在javascript中,将所有出现的点字符替换为下划线字符
- Regex Expression允许使用下划线、连字符和'&'象征
- 我需要接受下划线字符“”_"在regex电子邮件验证中
- Javascript RegEx全局字符串搜索下划线字符(_)
- 如何替换下划线之前的任何字母字符(带或不带重音)
- 正则表达式(连字符、下划线和句号)
- 如何过滤所有特殊字符(下划线旁边)显示允许和不允许
- 匹配包含下划线、小写ASCII字母、ASCII数字、连字符或点的字符串,但不能以点和连字符开头
- 将数字(前面没有字符)替换为_(下划线)
- 检测元素的innerHTML的最后一个字符是否为"1",如果是,下划线并将最后一个字符设置为绿色,并
- 使用正则表达式匹配空字符串、逗号、连字符或下划线一次
- Regex不允许除连字符和下划线以外的符号
- Regex匹配下划线前后的字符
- 阻止用户名中除下划线 (_) 和句点 (.) 之外的特殊字符
- 使用实时验证脚本 - 除 _(下划线)以外的特殊字符 - (连字符).(点)和空格
- 正则表达式,用于将字符串中除“第一个字符”外的其他字符更改为“下划线”