Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript /用于在聊天室中发送消息的PM regex语法_Javascript_Regex_Chatroom - Fatal编程技术网

Javascript /用于在聊天室中发送消息的PM regex语法

Javascript /用于在聊天室中发送消息的PM regex语法,javascript,regex,chatroom,Javascript,Regex,Chatroom,我正在一个AJAX/PHP聊天室中工作,目前正在使用regex来检测用户是否发送了一个PM&然后确定它是谁以及消息是什么 如果用户键入以下内容 /佩茨库科总理你好,你太棒了 我想先测试一下我的字符串是否符合这个模式,然后得到“PezCuckow”和“你好,你真棒!”作为字符串发布到PHP 我对正则表达式做了一些研究,但真的不知道从哪里开始! 你能帮忙吗 ==多亏了大家的帮助,现在问题解决了== var reg = /^\/pm\s+(\w+)\s+(.*)$/i; var to = ""; i

我正在一个AJAX/PHP聊天室中工作,目前正在使用regex来检测用户是否发送了一个PM&然后确定它是谁以及消息是什么

如果用户键入以下内容

/佩茨库科总理你好,你太棒了

我想先测试一下我的字符串是否符合这个模式,然后得到“PezCuckow”和“你好,你真棒!”作为字符串发布到PHP

我对正则表达式做了一些研究,但真的不知道从哪里开始! 你能帮忙吗

==多亏了大家的帮助,现在问题解决了==

var reg = /^\/pm\s+(\w+)\s+(.*)$/i;
var to = "";

if(message.match(reg)) {
    m = message.match(reg);
    to = m[1];
    message = m[2];
}

假设名称字段中只有单词字符(无空格等)有效,这将满足您的要求:

var re = /(\/\w+) (\w+) (.+)/;

假设名称字段中只有单词字符(无空格等)有效,这将满足您的要求:

var re = /(\/\w+) (\w+) (.+)/;
这件事怎么样:

var reg = /^\/pm\s+(\w+)\s+(.*)$/i,
    m = '/pm PezCuckow Hi There you so awesome!'.match(reg);

m[0]; // "PezCuckow"
m[1]; // "Hi There you so awesome!"
它匹配
“/pm”
,然后是空格
(可以自由地接受额外的空格),然后是用户名
\w+
,然后是空格
,最后是消息
*
(这基本上是一行末尾的所有内容)。

对此有何看法:

var reg = /^\/pm\s+(\w+)\s+(.*)$/i,
    m = '/pm PezCuckow Hi There you so awesome!'.match(reg);

m[0]; // "PezCuckow"
m[1]; // "Hi There you so awesome!"

它匹配
“/pm”
,后跟空格
(可以自由地接受额外的空格),后跟用户名
\w+
,后跟空格
,最后是消息
*
(这基本上是行末尾的所有内容)。

此正则表达式解析消息:

^(?:\s*/(\w+)\s*(\w*)\s*)?((?:.|[\r\n])*)$
说明:

^              # start-of-string
(?:            # start of non-capturing group
  \s*/         #   a "/", preceding whitespace allowed
  (\w+)        #   match group 1: any word character, at least once (e.g. option)
  \s+          #   delimiting white space
  (\w*)        #   match group 2: any word character (e.g. target user)
  \s+          #   delimiting white space
)?             # make the whole thing optional
(              # match group 3:
  (?:          #   start of non-capturing group, either
    .          #     any character (does not include newlines)
    |          #     or
    [\r\n]     #     newline charaters
  )*           #   repeat as often as possible
)              # end match group 3
在你的情况下(
“/pm PezCuckow嗨,你太棒了!”
):

  • 第一组:“下午”
  • 第2组:“PezCuckow”
  • 第三组:“你好,你真棒!”
在更一般的情况下(
“你好,你太棒了!”

  • 第1组:“
  • 第2组:“
  • 第三组:“你好,你真棒!”
请注意,正斜杠需要在JavaScript正则表达式文本中转义:

/foo\/bar/

但通常不在正则表达式模式中。

此正则表达式解析消息:

^(?:\s*/(\w+)\s*(\w*)\s*)?((?:.|[\r\n])*)$
说明:

^              # start-of-string
(?:            # start of non-capturing group
  \s*/         #   a "/", preceding whitespace allowed
  (\w+)        #   match group 1: any word character, at least once (e.g. option)
  \s+          #   delimiting white space
  (\w*)        #   match group 2: any word character (e.g. target user)
  \s+          #   delimiting white space
)?             # make the whole thing optional
(              # match group 3:
  (?:          #   start of non-capturing group, either
    .          #     any character (does not include newlines)
    |          #     or
    [\r\n]     #     newline charaters
  )*           #   repeat as often as possible
)              # end match group 3
在你的情况下(
“/pm PezCuckow嗨,你太棒了!”
):

  • 第一组:“下午”
  • 第2组:“PezCuckow”
  • 第三组:“你好,你真棒!”
在更一般的情况下(
“你好,你太棒了!”

  • 第1组:“
  • 第2组:“
  • 第三组:“你好,你真棒!”
请注意,正斜杠需要在JavaScript正则表达式文本中转义:

/foo\/bar/
但一般来说,不是在正则表达式模式中