javascript - 需要 Javascript 正则表达式

标签 javascript regex

假设我有一个像 'a b xy c pq' 这样的字符串,并且我需要编写一个正则表达式,以便 match() 方法返回一个数组,如下所示: ['a','b','xy','c','pq']

让我们看一些例子:

>>> 'x y z '.match(/\w{1,3}\s+/g)
['x ', 'y ', 'z ']

>>> 'x y z '.match(/(\w{1,3})\s+/g)
['x ', 'y ', 'z ']

如您所见,即使我添加括号,它也会返回相同的结果。我希望结果没有空格。另外,如果不必在源字符串中添加结尾空格,那就太好了。

你认为我可以在哪里改进这个正则表达式以获得我想要的东西?

请注意,我不想使用 exec(),因为它必须运行多次才能获取所有匹配项。

另请注意,这个问题可以通过 split() 轻松解决

>>> 'x y z'.split(/\s/)
['x', 'y', 'z']

>>> "a b xy c pq".split(/\s/)
['a','b','xy','c','pq']

但是,我还需要验证该字符串。每个匹配项最多只能包含三个字符,并且每个匹配项应该是不带特殊字符的字母数字单词。因此我不能使用 split(),因为在这种情况下我必须单独验证每个匹配。我想通过一个正则表达式来完成这一切。

我想在单个正则表达式中进行验证和拆分的原因是因为我需要在一个事件中执行很多这些操作,因此我需要使其尽可能快。

最佳答案

通过附加 \s+,该模式匹配空格字符。

删除\s+:

'x y z '.match(/\w{1,3}/g)
// => ["x", "y", "z"]

使用\b,您可以在单词边界进行匹配。

'x y z '.match(/\b\w{1,3}\b/g)
// => ["x", "y", "z"]
'x yyyyyyyyyy z '.match(/\b\w{1,3}\b/g)
// => ["x", "z"]

关于javascript - 需要 Javascript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19298260/

相关文章:

javascript - jQuery 中的正则表达式 : numbers within brackets

c++ - wsregex::compile 在处理正则表达式字符串时崩溃(内存泄漏)?

javascript - AngularJS展开和折叠问题

javascript - 使用 CSS 填充选中的复选框

javascript - 使用iframe上传文件时如何添加请求头?

javascript - 拆分解析的 rss 结果

用于带括号的单词边界检测的javascript正则表达式

regex - 是否有典型的移动用户代理正则表达式模式?

mysql - 获取第一个字符不是字母数字的行

javascript - 我应该将类方法移动到原型(prototype)吗?