如何使用正则表达式从长于M个字母的单词中选择前N个字母?

时间:2015-08-01 20:05:22

标签: regex

我需要使用regexp从长于M个字母的单词中选择前N个字母。可能吗?设N = 3,M = 5,字符串为:

We prefer questions that can be answered, not just discussed

然后我的正则表达式必须匹配

pre que ans dis

我可以用

匹配所有单词中的前3个字母

/\b[A-z]{3}/g

现在我如何才能将这个应用于长度超过5个字母的单词?

2 个答案:

答案 0 :(得分:2)

您可以匹配两个未捕获的字母:

/(\b[A-z]{3})[A-z]{2}/g

您确定[A-z]是您想要的而不是[A-Za-z]吗? [A-z]包含以下符号:[\]^_'

答案 1 :(得分:2)

您可以使用以下正则表达式:

var s = 'We prefer questions that can be answered, not just discussed'
var r = s.match(/\b[a-z]{3}(?=[a-z]{2,}\b)/gi)
console.log(r) //=> [ 'pre', 'que', 'ans', 'dis' ]

注意:字符类[A-z]包含介于ASCII Table之间的特殊字符。