正则表达式以检测某些ASCII码

时间:2019-04-04 13:47:58

标签: regex

我不太擅长正则表达式,并且我目前正在使用以下方法来防止某些ASCII代码(40、38、9、13、27)放入输入中:

if(str.includes("(")) etc

有人可以帮助我吗?我发现的唯一正则表达式阻止了所有ASCII代码,而这并不是我所追求的功能。

/^[\x00-\x7F]*$/

1 个答案:

答案 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 表示)