如何查找字符串中存在的任何特定字符

时间:2017-09-21 10:30:36

标签: javascript jquery

我正在寻找一种搜索字符串中给定字符存在的解决方案。这意味着如果字符串中存在任何给定的字符,它应该返回true。

现在正在使用数组和循环。但老实说,我觉得这不是一个好方法。那么没有数组或循环有最简单的方法吗?



null

$JobId  = Input::get('JobId') ; 




3 个答案:

答案 0 :(得分:1)

尝试使用regex

var patt = /[$%@]/;
console.log(patt.test("using it to replace VLOOKUP entirely.$ But there are still a few lookups that you are not sure how to perform. Most importantly, you would like to be able to look up a value based on multiple criteria within separate columns."));

答案 1 :(得分:1)

请注意,regEx中的[x]仅适用于单个字符。

如果你说要搜索说replace,它会在字符串中查找“r,e,p,l,a,c”的任何内容。

使用regEx需要注意的另一件事是逃避。使用简单的转义regEx在这里找到 - > Is there a RegExp.escape function in Javascript?我在字符串中进行了更通用的查找。

当然你问given characters in a string,所以对于在SO上发现这篇文章的人来说,这更像是一个答案。在查看一系列字符串的原始问题时,人们可能很容易认为这是您可以传递给regEx的内容。 IOW:你的问题不是我怎么能知道字符串中是否存在$,%,@。

var mystring = ' using it to replace VLOOKUP entirely.$ But there are still a few lookups that you are not sure how to perform. Most importantly, you would like to be able to look up a value based on multiple criteria within separate columns.';

function makeStrSearchRegEx(findlist) {
  return new RegExp('('+findlist.map(
  s=>s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')).join('|')+')');
}

var re = makeStrSearchRegEx(['$', '%', '@', 'VLOOKUP']);


console.log(re.test(mystring));  //true
console.log(re.test('...VLOOKUP..')); //true
console.log(re.test('...LOOKUP..'));  //false

答案 2 :(得分:0)

最好的方法是使用正则表达式。您可以阅读更多相关信息here

在你的情况下,你应该做这样的事情:

const specialCharacters = /[$%@]/;
const myString = ' using it to replace VLOOKUP entirely.$ But there are still a few lookups that you are not sure how to perform. Most importantly, you would like to be able to look up a value based on multiple criteria within separate columns.';
if(specialCharacters.test(myString)) {
   console.info("Exists...");
}

请注意,在每次使用时,将正则表达式存储在变量中以防止创建正则表达式(这不是最快的操作)是一种很好的方法。