使用javascript搜索字符串中的单词

时间:2018-12-01 05:43:46

标签: javascript

我以这种方式正确地搜索了字符串中的某个单词:

let text = jsonDesc.plain_text;

const product = 'Producto:';

const resultProduct = text.match(new RegExp(product + '\\s(\\w+)'))[1];

console.log( resultProduct ) // Mesa

但是如果有时单词是小写字母而其他时候是大写字母,该如何搜索字符串?

我尝试过:

     var product = 'Producto:';
     var productU = 'PRODUCTO:';

     var resultProduct = text.match(new RegExp(product && productUpper + '\\s(\\w+)'))[1];

并且:

var resultProduct = text.match(new RegExp( '^[a-zA-Z]' + product + '\\s(\\w+)'))[1];

但是不起作用,错误:

未捕获(承诺)TypeError:无法在VueComponent.getAllProducts读取null的属性“ 1”

2 个答案:

答案 0 :(得分:1)

您可以将不区分大小写的匹配(i)用作regex flag

new RegExp(expression, 'i');

在您的情况下,它看起来像text.match(new RegExp(product + '\\s(\\w+)', 'i'))[1];

但是,我建议不要将产品附加到表达式中,因为它可能包含特殊的正则表达式字符。例如,现在您在其中有一个冒号,可能会引起问题。如果product是固定的,我只需要重写您的代码即可

var product = 'Producto';
text.match(new RegExp(product + '\\:\\s(\\w+)', 'i'))[1];

或者escape the text,然后将其附加到其余

function escapeRegex(expression) { return expression.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); }
var product = 'Producto:';
text.match(new RegExp(escapeRegex(product) + '\\s(\\w+)', 'i'))[1];

答案 1 :(得分:0)

首先将所有字符串转换为小写,然后检查字符串是否包含搜索到的单词

let product = 'Producto:'
let productU = 'PRODUCTO:'
let match = product.toLowerCase().includes(productU.toLowerCase())

console.log(match)