Javascript 以某种方式匹配未大写的单词
我想要一个正则表达式,它匹配所有不是CapitalDexactlyThisway的“CapitalDexactlyThisway”实例 我创建了一个函数,用于查找所有不区分大小写的匹配项的索引,然后将值推回Javascript 以某种方式匹配未大写的单词,javascript,regex,Javascript,Regex,我想要一个正则表达式,它匹配所有不是CapitalDexactlyThisway的“CapitalDexactlyThisway”实例 我创建了一个函数,用于查找所有不区分大小写的匹配项的索引,然后将值推回 但我更愿意说类似于text.replace(regexp,“$1”)replace也有一个回调函数 s = s.replace(reg1, function(m){ if(m===word) return m; return '<highlight>'+m+'</
但我更愿意说类似于
text.replace(regexp,“$1”)代码>replace
也有一个回调函数
s = s.replace(reg1, function(m){
if(m===word) return m;
return '<highlight>'+m+'</highlight>';
});
s=s.replace(reg1,函数(m){
如果(m==word)返回m;
返回“+m+”;
});
replace
也有一个回调函数
s = s.replace(reg1, function(m){
if(m===word) return m;
return '<highlight>'+m+'</highlight>';
});
s=s.replace(reg1,函数(m){
如果(m==word)返回m;
返回“+m+”;
});
replace
也有一个回调函数
s = s.replace(reg1, function(m){
if(m===word) return m;
return '<highlight>'+m+'</highlight>';
});
s=s.replace(reg1,函数(m){
如果(m==word)返回m;
返回“+m+”;
});
replace
也有一个回调函数
s = s.replace(reg1, function(m){
if(m===word) return m;
return '<highlight>'+m+'</highlight>';
});
s=s.replace(reg1,函数(m){
如果(m==word)返回m;
返回“+m+”;
});
如果您能以某种方式让JavaScript使用部分不区分大小写的匹配,即(?i)
,您可以使用以下表达式:
capitalized(?!ExactlyThisWay)(?i)exactlythisway
如果没有,您可能会遇到这样的问题:
capitalized(?!ExactlyThisWay)[a-zA-Z]+
缺点是它还将匹配其他变体,如capitaledfoobar
等
如果您能以某种方式让JavaScript使用部分不区分大小写的匹配,即(?i)
,您可以使用以下表达式:
capitalized(?!ExactlyThisWay)(?i)exactlythisway
如果没有,您可能会遇到这样的问题:
capitalized(?!ExactlyThisWay)[a-zA-Z]+
缺点是它还将匹配其他变体,如capitaledfoobar
等
如果您能以某种方式让JavaScript使用部分不区分大小写的匹配,即(?i)
,您可以使用以下表达式:
capitalized(?!ExactlyThisWay)(?i)exactlythisway
如果没有,您可能会遇到这样的问题:
capitalized(?!ExactlyThisWay)[a-zA-Z]+
缺点是它还将匹配其他变体,如capitaledfoobar
等
如果您能以某种方式让JavaScript使用部分不区分大小写的匹配,即(?i)
,您可以使用以下表达式:
capitalized(?!ExactlyThisWay)(?i)exactlythisway
如果没有,您可能会遇到这样的问题:
capitalized(?!ExactlyThisWay)[a-zA-Z]+
缺点是它还将匹配其他变体,如capitaledfoobar
等
您可以尝试使用此正则表达式来匹配所有不区分大小写的exactlythisway
字符串,但不能匹配exactlythisway
\bcapitalized(?!ExactlyThisWay)(?:[Ee][Xx][Aa][Cc][Tt][Ll][Yy][Tt][Hh][Ii][Ss][Ww][Aa][Yy])\b
您可以尝试使用此正则表达式来匹配所有不区分大小写的exactlythisway
字符串,但不能匹配exactlythisway
\bcapitalized(?!ExactlyThisWay)(?:[Ee][Xx][Aa][Cc][Tt][Ll][Yy][Tt][Hh][Ii][Ss][Ww][Aa][Yy])\b
您可以尝试使用此正则表达式来匹配所有不区分大小写的exactlythisway
字符串,但不能匹配exactlythisway
\bcapitalized(?!ExactlyThisWay)(?:[Ee][Xx][Aa][Cc][Tt][Ll][Yy][Tt][Hh][Ii][Ss][Ww][Aa][Yy])\b
您可以尝试使用此正则表达式来匹配所有不区分大小写的exactlythisway
字符串,但不能匹配exactlythisway
\bcapitalized(?!ExactlyThisWay)(?:[Ee][Xx][Aa][Cc][Tt][Ll][Yy][Tt][Hh][Ii][Ss][Ww][Aa][Yy])\b
不幸的是,JavaScript正则表达式不支持仅使表达式的一部分不区分大小写
您可以编写一个小助手函数来完成这些繁琐的工作:
function capitalizationSensitiveRegex(word) {
var chars = word.split(""), i;
for (i = 0; i < chars.length; i++) {
chars[i] = "[" + chars[i].toLowerCase() + chars[i].toUpperCase() + "]";
}
return new RegExp("(?=\\b" + chars.join("") + "\\b)(?!" + word + ").{" + word.length + "}", "g");
}
请注意,由于\b
在JavaScript中的工作方式受到限制,因此假定使用ASCII字母。它还假设您没有在word
中使用任何正则表达式元字符(括号、反斜杠、括号、星形、点等)。要使上述内容稳定,需要额外的一步正则表达式引用每个字符。不幸的是,JavaScript正则表达式不支持仅使表达式的一部分不区分大小写
您可以编写一个小助手函数来完成这些繁琐的工作:
function capitalizationSensitiveRegex(word) {
var chars = word.split(""), i;
for (i = 0; i < chars.length; i++) {
chars[i] = "[" + chars[i].toLowerCase() + chars[i].toUpperCase() + "]";
}
return new RegExp("(?=\\b" + chars.join("") + "\\b)(?!" + word + ").{" + word.length + "}", "g");
}
请注意,由于\b
在JavaScript中的工作方式受到限制,因此假定使用ASCII字母。它还假设您没有在word
中使用任何正则表达式元字符(括号、反斜杠、括号、星形、点等)。要使上述内容稳定,需要额外的一步正则表达式引用每个字符。不幸的是,JavaScript正则表达式不支持仅使表达式的一部分不区分大小写
您可以编写一个小助手函数来完成这些繁琐的工作:
function capitalizationSensitiveRegex(word) {
var chars = word.split(""), i;
for (i = 0; i < chars.length; i++) {
chars[i] = "[" + chars[i].toLowerCase() + chars[i].toUpperCase() + "]";
}
return new RegExp("(?=\\b" + chars.join("") + "\\b)(?!" + word + ").{" + word.length + "}", "g");
}
请注意,由于\b
在JavaScript中的工作方式受到限制,因此假定使用ASCII字母。它还假设您没有在word
中使用任何正则表达式元字符(括号、反斜杠、括号、星形、点等)。要使上述内容稳定,需要额外的一步正则表达式引用每个字符。不幸的是,JavaScript正则表达式不支持仅使表达式的一部分不区分大小写
您可以编写一个小助手函数来完成这些繁琐的工作:
function capitalizationSensitiveRegex(word) {
var chars = word.split(""), i;
for (i = 0; i < chars.length; i++) {
chars[i] = "[" + chars[i].toLowerCase() + chars[i].toUpperCase() + "]";
}
return new RegExp("(?=\\b" + chars.join("") + "\\b)(?!" + word + ").{" + word.length + "}", "g");
}
请注意,由于\b
在JavaScript中的工作方式受到限制,因此假定使用ASCII字母。它还假设您没有在word
中使用任何正则表达式元字符(括号、反斜杠、括号、星形、点等)。要使上述内容稳定,需要使用正则表达式引用每个字符的额外步骤。您可以使用匹配和映射方法,并使用回调:
tok=[], input.match(/\bcapitalizedexactlythisway\b/ig).map( function (m) {
if (m!="capitalizedExactlyThisWay") tok.push(m); });
console.log( tok );
["capitalizedEXACTLYTHISWAY", "capitalizedexactlYthisWay", "capitalizedexactlythisway"]
您可以将匹配
和映射
方法与回调一起使用:
tok=[], input.match(/\bcapitalizedexactlythisway\b/ig).map( function (m) {
if (m!="capitalizedExactlyThisWay") tok.push(m); });
console.log( tok );
["capitalizedEXACTLYTHISWAY", "capitalizedexactlYthisWay", "capitalizedexactlythisway"]
您可以将匹配
和映射
方法与回调一起使用:
tok=[], input.match(/\bcapitalizedexactlythisway\b/ig).map( function (m) {
if (m!="capitalizedExactlyThisWay") tok.push(m); });
console.log( tok );
["capitalizedEXACTLYTHISWAY", "capitalizedexactlYthisWay", "capitalizedexactlythisway"]
您可以将匹配
和映射
方法与回调一起使用:
tok=[], input.match(/\bcapitalizedexactlythisway\b/ig).map( function (m) {
if (m!="capitalizedExactlyThisWay") tok.push(m); });
console.log( tok );
["capitalizedEXACTLYTHISWAY", "capitalizedexactlYthisWay", "capitalizedexactlythisway"]
但是,先生,它会匹配的:CapitaledFoobar和CapitaldZoobazo几乎在那里,但埃勒是对的:(+1表示负数)lookahead@Shanimal:你想实现什么?你的最终目标?也许有更好的方法。@Amal。目标更多是关于工具箱中的工具和满足好奇心。在这种情况下,我的ide需要一个regexp,但后来我意识到我可以使用适当的bo案例进行搜索和替换当然,在那一刻,我突然意识到我工作的时间太长了