-
44 查看新添加的 .localeCompare() javascript方法。 在编写时仅受现代浏览器支持(IE11+)。 看见 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… – 阿德里亚诺 评论 2014年9月26日10:43 -
8 @阿德里安贝 “A”.localeCompare(“A”); 收益 1 在Chrome 48控制台中。 – 曼努埃尔 评论 2016年2月25日9:22 -
1 @曼努埃尔 本地比较 如果传递 {敏感度:“重音”} 或 {灵敏度:'base'} 选项。 “A”.localeCompare(“A”,未定义,{敏感度:“重音”})==0 . – JLRishe公司 评论 2019年1月10日3:25
23答案
var areEqual=字符串1.toUpperCase()===字符串2.toUpperCase();
-
63 -
68 -
201 -
179 @jpmc26:是; msdn.microsoft.com/en-us/library/bb386042.aspx 和 en.wikipedia.org/wiki/Capital_%E1%BA%9E – SLaks公司 评论 2014年5月27日23:44 -
15 @库格尔这个答案是9岁。 从那时起,就有了新的功能,所以截至您发表评论之日,它并不是JS所能提供的最好的功能。 请参阅下面的答案 本地比较 它是最近更新的(但仍然是五年前)。 我不知道过去五年里发生了什么变化 本地比较 不再是最佳答案。 – 塞缪尔·内夫 评论 2019年8月23日3:56
函数ci等于(a,b){ 返回typeof a===“字符串”&&typeof b===”string“ ? a.localeCompare(b,未定义,{敏感度:“重音”})===0 :a===b; } console.log(“'a'='a'?”,ciEquals('a','a')); console.log(“AaaA'='AaA'?”,ciEquals(AaaA','aAAa')); console.log(“'a'='aa'?”,ciEquals('a','aa')); console.log(“'a'='b'?”,ciEquals('a','b'));
函数ciEqualsInner(a,b){ return a.localeCompare(b,未定义,{sensitivity:“重音”})===0; } 函数ci等于(a,b){ if(typeof a!=='string'||typeof b!=='string'){ 返回a===b; } //v----特征检测 return ciEqualsInner('A','A') ? ci等于内部(a,b) :/*此处采用后备方法*/; }
-
5 @进退两难,是的,这就是我所说的必须处理的问题——“您需要从字符串生成RegExp,但如果字符串中包含特殊正则表达式字符,则将字符串传递给RegExp构造函数可能会导致不正确的匹配或失败的匹配” – 塞缪尔·内夫 评论 2014年6月6日17:29 -
30 使用这种方法进行区分大小写的字符串比较是成本最高的解决方案。 RegExp用于复杂的模式匹配,因此,它需要为每个模式构建一个决策树,然后针对输入字符串执行该决策树。 虽然它会起作用,但它相当于在下一个街区乘坐喷气式飞机去购物。 tl; 医生:请不要这样做。 – 阿戈斯顿-霍瓦特 评论 2015年4月1日11:30 -
三 -
6 @StingyJack要使用localeCompare进行区分大小写的比较,您应该执行“a”.localeCompare('a',undefined,{sensitivity:“base”}) 评论 2018年8月1日15:58 -
2 注: 这个 本地比较 版本要求JavaScript引擎支持 ECMAScript®国际化API ,它是 不 因此,在依赖它之前,您可能需要检查它是否在您使用的环境中工作。 例如: constcompareInsensitive=“x”.localeCompare(“x”,未定义,{sensitive:“base”})===0? (a,b)=>a.localeCompare(b,未定义,{sensitivity:“base”}):(a,b)=>a.to LowerCase().localeCompare; 或者一些类似的。 – T.J.克劳德 评论 2019年8月21日6:31
“xyz”.localeCompare(“xyz”,未定义,{敏感度:“base”});// 返回0
函数等于IgnoringCase(文本,其他){ return text.localeCompare(其他,未定义,{敏感度:'base'})===0; }
在瑞典语中,“ä”和“a”是分开的基本字母
灵敏度选项
浏览器支持
更新:
(/^关键字$/i).test(源代码)
(/keyword/i).test(源代码)
(/keyword/).test(源代码)
函数compareStrings(字符串1、字符串2、ignoreCase、useLocale){ if(ignoreCase){ if(useLocale){ string1=字符串1.toLocaleLowerCase(); string2=字符串2.toLocaleLowerCase(); } 其他{ string1=字符串1.toLowerCase(); string2=字符串2.toLowerCase(); } } 返回字符串1===字符串2; }
-
1 -
-
-
-
函数my_strcasecmp(a,b) { if((a+'').toLowerCase()>(b+'')-toLowerCase())返回1 if((a+'').toLowerCase()<(b+'')-toLowerCase())返回-1 返回0 }
var ignoreCase=要求('ignore-case'); ignoreCase.equals('FOO','FOO');//=> 真的 ignoreCase.startsWith('foobar','FOO');//=> 真的 ignoreCase.endsWith('foobar','BaR');//=> 真的 ignoreCase.includes('AbCd','c');//=> 真的 ignoreCase.indexOf('AbCd','c');//=> 2
var matchString=“测试”; if(matchString.match(/test/i)){ alert('matchString包含子字符串“test”不区分大小写'); } 其他{ alert('matchString不包含子字符串“test”,不区分大小写'); }
var matchString=“测试”; if(matchString.match(/^test$/i)){ alert('matchString等于“test”不区分大小写'); } 其他{ alert('matchString不等于“test”不区分大小写'); }
-
三 -
-
@RazvanZamfir,在动态模式的情况下,您可以使用RegExp Object Ex:var x=new RegExp(/test/,“gi”); matchString.match(x); 评论 2021年3月26日14:58 -
或者 const x_regex=新RegExp(`^${x}$`,“gi”); 尽管这很混乱。 – 用户4945014 评论 2021年10月15日2:13 -
国际化应用程序应避免 字符串到UpperCase 和 字符串到下壳体 。请使用忽略大小写的正则表达式。 例如, var needRegExp=新RegExp(指针,“i”); 然后 针状膨胀试验(干草堆) . 通常,您可能不知道 针 .小心 针 不包含任何正则表达式 特殊字符 。使用退出这些 针.替换(/[-[\]{}()*+\\^$|# \s] /g,“\\$&”); . 在其他情况下,如果要精确匹配 针 和 干草堆 ,忽略大小写,确保添加 “^” 一开始 "$" 在正则表达式构造函数的末尾。
var haystack=“A.BAIL.Of.Hay.”; var针=“bal.”; var needRegExp=新RegExp(指针.replace(/[-[\]{}()*+\\^$|# \s] /g,“\\$&”),“i”); var结果=needRegExp.test(干草堆); if(结果){ //此处显示您的代码 }
String.prototype.equalIgnoreCase=函数(str) { return(str!=null &&typeof str===“字符串” &&this.toUpperCase()===str.toUpperCase()); }
var a=“hello”; var b=“HeLLo”; var c=“世界”; 如果(a.equalIgnoreCase(b)){ document.write(“a==b”); } 如果(a.equalIgnoreCase(c)){ document.write(“a==c”); } 如果(!b.equalIgnoreCase(c)){ document.write(“b!=c”); }
“a==b” “b!=c”
String.prototype.equalIgnoreCase=函数(str){ return(str!=空&& typeof str===“字符串”&& this.toUpperCase()===字符串toUpperCase()); } var a=“hello”; var b=“HeLLo”; var c=“世界”; 如果(a.equalIgnoreCase(b)){ document.write(“a==b”); document.write(“<br>”); } 如果(a.equalIgnoreCase(c)){ document.write(“a==c”); } 如果(!b.equalIgnoreCase(c)){ document.write(“b!=c”); }
将字符串转换为大写,然后使用strict运算符进行比较( === ). 使用字符串方法进行模式匹配:
<! doctype html> <html> <头部> <脚本> //第1路 var a=“苹果”; var b=“苹果”; 如果(a.到UpperCase()===b.到Uppercase()){ 警报(“相等”); } //第2路 var a=“Null and void”; document.write(a.search(/null/i)); </script> </头> </html>
函数equalIgnoreCase(s1:字符串,s2:字符串){ return new Intl.Collator(“en-US”,{sensitivity:“base”}).compare(s1,s2)===0; }
导出常量等于ignoreCase=(str1,str2)=>{ return(!str1&&!str2)||(str1&&str2&&str1.toUpperCase()==str2.toUpperCase()) }
if(类型String.prototype.isEqual!=“函数”){ String.prototype.isEqual=函数(str){ return this.toUpperCase()==str.toUpperCase(); }; }
$(“#btnGuess”)。单击(guessWord); 函数guessWord(){ var letter=$(“#guessLetter”).val(); var word=“ABC”; var pattern=RegExp(字母,'gi');// 模式:/a/gi var结果=word.match(模式); alert(“忽略大小写:”+result); }
str=“Lol”,str2=“Lol”,regex=新RegExp(“^”+str+“$”,“i”); if(regex.test(str)){ console.log(“true”); }
返回str1!= 空&&str2!= 无效的 &&typeof str1===“string”&&typeof str2===”string“ &&str1.toUpperCase()===str2.toUpperCase();
return(str1==空&&str2==空) ||(str1!=空&&str2!=空 &&typeof str1===“string”&&typeof str2===”string“ &&str1.toUpperCase()===str2.toUpperCase());
return(str1===未定义&&str2===已定义) ||(str1===空&&str2===零) ||(str1!=null&&str2!=null &&typeof str1===“string”&&typeof str2===”string“ &&str1.toUpperCase()===str2.toUpperCase());
函数比较不敏感(str1,str2){ str1的返回类型===“字符串”&& str2类型===“字符串”&& 新RegExp(“^”+str1.replace(/[-\/\^$*+?.()|[\]{}]/g,'\\$&')+“$”,“i”).test(str2); }
验证参数类型(任何非字符串参数,如 未定义 例如,会使如下表达式崩溃 str1.toUpperCase() ). 不存在可能的国际化问题。 逃离 注册Exp 字符串。
常量CHARS_IN_BETWEEN=32; 常量LAST_UPPERCASE_CHAR=90;// Z轴 函数strMatchesIgnoreCase(小写Match,value){ 设i=0,matches=lowercaseMatch.length===value.length; while(匹配&&i<小写Match.length){ const a=小写Match.charCodeAt(i); 常数A=A-CHARS_IN_BETWEEN; const b=value.charCodeAt(i); 常数B=B+((B>LAST_UPPERCASE_CHAR)- CHARS_IN_BETWEEN:CHARS_IN-BETWEEN); 匹配=a===b//更低a====b ||A===b//上部A==b ||a===B//更低a==~B ||A===B;// 上部A==~b i++; } 返回匹配; }
String.prototype.equalsci=函数{ var regexp=regexp(“^”+this.replace(/[.\\+*?\[\^\]$(){}=!<>|:-]/ g、 “\\$&”)+“$”,“i”); 返回regexp.test; } “PERSON@ü.EXAMPLE.COM”.equalsci(“PERSON@ü/EXAMPLE.COM”)//返回true
“I”.localeCompare(“I”,未定义,{sensitivity:“accent”})===0//返回true “I”.localeCompare(“I”,“tr”,{sensitivity:“accent”})===0//返回false
-
最好使用Object.defineProperty来避免equalsci方法是可枚举的。 – 用户4945014 评论 2021年10月15日2:11
String.equal=函数(s1,s2,ignoreCase,useLocale){ if(s1==null || s2==null) 返回false; if(!ignoreCase){ 如果(s1.length!==s2.length-) 返回false; 返回s1==s2; } if(useLocale){ if(useLocale.length) return s1.toLocaleLowerCase(useLocale)===s2.toLocaleLoverCase(use Locale) 其他的 return s1.toLocaleLowerCase()===s2.toLocalLowerCasE() } 其他{ 如果(s1.length!==s2.length-) 返回false; 返回s1.toLowerCase()===s2.到LowerCase[)]; } }
String.equal=函数(s1,s2,ignoreCase,useLocale){ if(s1==null|s2==null) 返回false; if(!ignoreCase){ 如果(s1.length!==s2.length-) 返回false; 返回s1==s2; } if(useLocale){ if(useLocale.length) return s1.toLocaleLowerCase(useLocale)===s2.toLocaleLoverCase(use Locale) 其他的 return s1.toLocaleLowerCase()===s2.toLocalLowerCasE() } 其他{ 如果(s1.length!==s2.length-) 返回false; 返回s1.toLowerCase()===s2.到LowerCase[)]; } } //如果您不介意扩展原型。 String.prototype.equal=函数(string2,ignoreCase,useLocale){ return String.equal(this.valueOf(),string2,ignoreCase,useLocale); } //------------------测试---------------------- console.log(“测试…”); console.log('区分大小写1'); var result=“Abc123”.equal(“Abc123”); console.assert(结果===true); console.log('区分大小写2'); result=“aBC123”.equal(“aBC123”); console.assert(结果===false); console.log(“忽略情况”); result=“AbC123”.equal(“AbC123”,true); console.assert(结果===true); console.log('忽略大小写+当前区域设置'); result=“AbC123”.equal(“AbC123”,true); console.assert(结果===true); console.log(“土耳其测试1(忽略案例,en-US)”); result=“IiI”.equal(“i i i”,true,“en-US”); console.assert(结果===false); console.log(“土耳其测试2(忽略案例,tr-tr)”); result=“IiI”.equal(“i i i”,true,“tr-tr”); console.assert(结果===true); console.log(“土耳其测试3(区分大小写,tr-tr)”); result=“IiI”.equal(“i i”,false,“tr-tr”); console.assert(结果===false); 控制台.log('null-test-1'); result=“AAA”.equal(null); console.assert(结果===false); 控制台.log('null-test-2'); result=String.equal(null,“BBB”); console.assert(结果===false); 控制台.log('null-test-3'); result=String.equal(null,null); console.assert(结果===false);
降低功能(a){ 设c=“”; for(设i=0;i<a.length;i++){ 设f=a.charCodeAt(i); 如果(f<95){ c+=字符串.fromCharCode(f+32); } 其他{ c+=a[i]; } } 返回c; } 功能比较(a,b){ 返回到下限(a)==到下限(b); } console.log(compareIt(“An ExamPlE”,“An ExamPlE”));