javascript - 字符串变量不接受 "?"符号

标签 javascript string variables protractor sign

我编写的代码是:

element(by.className('charge')).getText()
    .then(function(text){
        var blabla = "Is this my string?";

        expect(text.match(blabla)).toBe(true);
        console.log(text);
    });

甚至我的控制台输出等于我的 blabla 变量, 我得到结果:

Expected [ 'Is this my string' ] to be true.

没有任何“?”签名。

这怎么可能?

最佳答案

match 的参数是:

A regular expression object. If a non-RegExp object obj is passed, it is implicitly converted to a RegExp by using new RegExp(obj).

所以不要给它传递一个字符串。明确地向它传递一个正则表达式对象(因为与将字符串转换为正则表达式并且必须处理两个级别的语法来转义相比,这涉及的痛苦要少得多)。

正则表达式将 ? 视为特殊字符(在您的代码上下文中,它表示“g 应出现 0 次或 1 次”。您需要转义问题如果您想匹配它们,请标记。

var blabla = /Is this my string\?/;

就是说,如果你想匹配整个字符串,将其作为测试会更容易:

var blabla = "Is this my string?";
expect(text).toBe(blabla);

关于javascript - 字符串变量不接受 "?"符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30167298/

相关文章:

javascript - 如何单击 HTML 变量更改?

javascript onclick 将 onclick 更改为新功能

javascript - 使用 Meteor 并输入复选框

javascript - JQuery Datepicker/Datetimepicker - 如何根据选定的选项在 java 中设置 MaxDate

java - 无法在循环内的 while 循环外更改变量

python - 试用不使用字典的动态Python变量创建

javascript - 直接从 node.js 中的文件解析 JSON

java - java用来在内部存储字符串的字符集是哪个?

mysql - MySQL TRIM 函数是否不修剪换行符或回车符?

将 char * 转换为 byte