Hashtags正则表达式限制字符数

时间:2017-12-22 08:05:53

标签: ios regex

我目前正在尝试限制匹配主题标签的字符数。 我想只在少于25个字符的情况下才匹配主题标签。

这就是我所拥有的(没有限制):

regex = [[NSRegularExpression alloc] initWithPattern:@"(#+[\\S\\_]+)?" options:0 error:&error];

我尝试了类似的东西,但没有成功:

regex = [[NSRegularExpression alloc] initWithPattern:@"(#+[\\S\\_]{0,10})?" options:0 error:&error];

如果我启动这样的代码,主题标签是匹配的,但它们会被删除。

enter image description here

如果主题标签超过25个字符,我想完全不匹配;我尝试在$之后添加{0,10},但它无效。

2 个答案:

答案 0 :(得分:0)

我认为这应该有效:

let pat = "^#[^#\\s]{1,10}$"
let testStr = "#asd"
let regex = try! NSRegularExpression(pattern: pat, options: [])
let matches = regex.matches(in: testStr, options: [], range: NSRange(testStr.startIndex..., in: testStr))

matches.count

答案 1 :(得分:0)

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

initWithPattern:@"#\\S{1,25}(?!\\S)"

请参阅regex demo

<强>详情

  • # - #符号
  • \S{1,25} - 1到25个非空白字符
  • (?!\S) - 当前位置右侧不允许使用非空白字符。

正则表达式引擎将匹配#,然后将尝试获取25个非空白字符(如果有更少,它将回溯以匹配更少,但至少1个非空白字符)然后将尝试断言在非空格字符之后有一个空格或字符串结尾。