【问题标题】:Regex match first word differently正则表达式以不同方式匹配第一个单词
【发布时间】:2021-03-31 16:07:48
【问题描述】:

此正则表达式匹配以大写字母开头的字符串。

var str = "THISIsTheStringToSplit".match(/[A-Z]+[a-z]*/g);

但是,如果字符串以小写字母开头,我希望它成为第一个单词的一部分。例如

  var str = "testTHISIsTheStringToSplit".match(/[A-Z]+[a-z]*/g);

所以第一个匹配应该是“testTHISIs”

我应该如何修改正则表达式以允许这种情况?

【问题讨论】:

  • 您的正则表达式已经有一个“小写”部分。如何移动它,复制它,......尝试自己的东西......
  • 你是对的,但我不确定如何仅在第一部分有条件地进行此操作。谢谢!
  • 对于THISIsTheStringToSplit,这两个链接给出的结果与此问题/答案不同。

标签: javascript regex


【解决方案1】:

在匹配 1+ 个大写字母之前,允许在开头匹配 0 个或多个小写字母:

/[a-z]*[A-Z]+[a-z]*/g

Regex Demo

const arr = ['THISIsTheStringToSplit', 'testTHISIsTheStringToSplit']

const re = /[a-z]*[A-Z]+[a-z]*/g;

arr.forEach(s =>
  console.log(s, s.match(re))
)

【讨论】:

  • 但我确实看到 OP 的一个尝试的正则表达式没有按预期的方式工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 2010-10-07
  • 2022-12-17
  • 2013-01-23
  • 1970-01-01
相关资源
最近更新 更多