我不太擅长正则表达式,并且我目前正在使用以下方法来防止某些ASCII代码(40、38、9、13、27)放入输入中:
if(str.includes("(")) etc
有人可以帮助我吗?我发现的唯一正则表达式阻止了所有ASCII代码,而这并不是我所追求的功能。
/^[\x00-\x7F]*$/
答案 0 :(得分:1)
首先,由于使用的是十六进制转义序列,因此需要将这些十进制字符代码转换为十六进制。然后,您可以创建一个与这些字符匹配并与全局标志匹配的字符类:
import { $, browser } from 'protractor';
import { protractor } from 'protractor/built/ptor';
describe('Login page', () => {
let EC = protractor.ExpectedConditions;
it('should allow the test user to login', async () => {
await $('input[name=email]').sendKeys('abc@xyz.com');
await $('input[name=password]').sendKeys('pwd');
await $('button.auth0-lock-submit').click();
await browser.wait(EC.titleContains('user'), 15000);
});
it('should allow the test user to logout', async () => {
await $('logoutbutton').click();
await browser.wait(EC.titleContains('loginpage'), 15000);
});
});
如果输入在任何地方都包含任意一个字符,这将匹配:
40 = \x28
38 = \x26
假设您使用的是JavaScript,则可以在浏览器控制台中进行测试:
/[\x28\x26]/g
上面的正则表达式匹配所有ASCII字符的原因是因为它是一个范围(由转义序列之间的/[\x28\x26]/g.test('asldkf(jals')
> true
/[\x28\x26]/g.test('asldkfjals')
> false
表示)