Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以某种方式匹配未大写的单词_Javascript_Regex - Fatal编程技术网

Javascript 以某种方式匹配未大写的单词

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+'</

我想要一个正则表达式,它匹配所有不是CapitalDexactlyThisway的“CapitalDexactlyThisway”实例

我创建了一个函数,用于查找所有不区分大小写的匹配项的索引,然后将值推回


但我更愿意说类似于
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案例进行搜索和替换当然,在那一刻,我突然意识到我工作的时间太长了