首页 > 解决方案 > 使用 REGEX 从句子开头删除不需要的字符

问题描述

我需要忽略字符串开头的字符,直到出现第一个有效字符。有效字符是+,numbersletters

所以我的策略是找出是否有这样的字符以删除它们。

我发现这几乎没问题

.+?(?=[A-Za-z0-9\+])

这是正则表达式101

但这几乎可以工作,因为当字符串以“无效”字符开头时它完全匹配,但是当由于某种原因字符串以有效字符开头并且长度> 1时给我一个误报

所以这句话

abcde"a"作为匹配返回,我不明白为什么。

我怎样才能解决这个难题?

非常感谢

标签: javascriptregex

解决方案


.+?模式至少匹配任何字符一次,所以你不应该对它匹配感到惊讶a。请注意,您的模式可以在字符串中的任何位置匹配,因为您没有使用^锚点。

您可以使用

.replace(/^[^A-Za-z0-9+]+/, '')

请参阅正则表达式演示详情

  • ^- 字符串的开始
  • [^A-Za-z0-9+]+- 一个或多个字符而不是 ASCII 字母或数字

JavaScript 演示:

const texts = ['abcde', '$#%^%abc'];
for (let text of texts) {
  console.log(text, '=>', text.replace(/^[^A-Za-z0-9+]+/, ''));
}


推荐阅读