不了解RegExp,.ignoreCase和.test()的示例及其工作原理

时间:2019-04-06 02:26:07

标签: javascript

我将这个代码示例用于一个类问题,但是我用Google搜索了答案,尽管人们说他们对此没有错,但我遇到了一个主要问题,因为我使用的代码我并不完全理解。 我必须同时使用变量regex1和regex2才能使其正常工作,但不明白为什么,也无法理解为什么没有regex2中的i代码就无法工作。我只想使用.ignoreCase和.test(),但它只能以这种方式工作。我不记得我在课堂测试中做过什么,但是我想了解这一点,已经阅读了Mozilla几个小时,但仍然对它的工作原理有所迷惑。

//This roughly what I used if I recall everything correctly.
var regex1 = new RegExp('virg');
var regex2 = new RegExp('virgil','i');
regex2.ignoreCase;
console.log(regex2.test('Virgilio'));


//This was the example I used but don't understand
var regex1 = new RegExp('foo');
var regex2 = new RegExp('foo', 'i');

console.log(regex1.test('Football'));   // expected output: false
console.log(regex2.ignoreCase);         // expected output: true
console.log(regex2.test('Football'));   // expected output: true

2 个答案:

答案 0 :(得分:0)

i标志用于在匹配时忽略大小写,这意味着如果使用i标志,则正则表达式引擎会将uppercaselowercase字母视为相同。< / p>

 Example 'A' === 'a' // true  in case of `i` flag active
         'A' === 'a' // false in case of `i` flag not active

the About technical profiles in Azure Active Directory B2C custom policies article用于测试i标志是否已激活,它是只读属性

答案 1 :(得分:0)

该示例说明了i标志参数的工作原理。

var regex1 = new RegExp('foo');        // case sensitive
var regex2 = new RegExp('foo', 'i');  // case insensitive

console.log(regex1.test('Football'));   // show false, because 'F' <> 'f'
console.log(regex2.ignoreCase);         // show true, because i flag was used in regex2. Otherwise false
console.log(regex2.test('Football'));   // show true, because 'Football' contains 'foo' and dont care lower and upper case

https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp