我需要使用正则表达式匹配@符号。我试过了正则表达式/\B@(\w*)$/
。它正在工作,但我的用例是@应该只在一个单词的开头出现一次。不超过一次:
@test - Right one.
@@test - Not a right one.
这是小提琴http://jsfiddle.net/Kurshith/deepk1dm/1/。在文本区域键入@时,将触发自动完成。但即使你输入@两次也会允许。但在我的情况下,它应该只允许@test,@ test @hello,@。请帮帮我。
答案 0 :(得分:1)
/^@[^@]*$/
会这样做。您的情况可以表述为:以@
开头,然后是@
出现0次或更多次的其他任何内容,直到字符串结尾。
使用Ruby irb
进行测试:
irb(main):003:0> /^@[^@]*$/.match("@test")
=> #<MatchData "@test">
irb(main):004:0> /^@[^@]*$/.match("@@test")
=> nil
irb(main):005:0> /^@[^@]*$/.match("@test@")
=> nil
irb(main):006:0> /^@[^@]*$/.match("@test@test")
=> nil
irb(main):007:0> /^@[^@]*$/.match("test")
=> nil
irb(main):008:0> /^@[^@]*$/.match("t@est")
=> nil
irb(main):009:0> /^@[^@]*$/.match("@")
=> #<MatchData "@">
irb(main):010:0> /^@[^@]*$/.match("@@")
=> nil
答案 1 :(得分:0)
我会使用空白边界。根据需要添加锚点。
(?<!\S)@(\w*)(?!\S)