正则表达式从字符串的中间和结尾删除特殊字符

时间:2017-04-12 04:26:59

标签: python regex string

我试图编写一个只允许字母,数字,单个空格,'-'字面值和'/'字面值的正则表达式。如何将表达式仅限于这些?

如果我输入"This should be invalid because it ends with!!! these",它仍会作为有效字符串返回,即使最后有感叹号。
我所拥有的并不完全正确:

[A-Z]|[a-z]|[0-9]|/|\s|-

1 个答案:

答案 0 :(得分:1)

这里的问题是,默认情况下,正则表达式不必匹配整个字符串。一个角色足以构成一个匹配(有时甚至没有)!您需要像^(?: ... )+$一样包围正则表达式,以使其按您的意愿运行:

console.log([
    'This should be invalid because it ends with!!! these', //=> false
    'This is valid' //=> true
].map(/ /.test,
  /^(?:[A-Z]|[a-z]|[0-9]|\/|\s|-)+$/
))

但是,编写相同表达式的更简洁方法是^[A-Za-z\d\s\/-]+$

console.log([
    'This should be invalid because it ends with!!! these', //=> false
    'This is valid' //=> true
].map(/ /.test,
  /^[A-Za-z\d\s\/-]+$/
))