Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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 仅当不包含在子字符串中时才使用正则表达式拆分空间_Javascript_Regex_String_Function_Split - Fatal编程技术网

Javascript 仅当不包含在子字符串中时才使用正则表达式拆分空间

Javascript 仅当不包含在子字符串中时才使用正则表达式拆分空间,javascript,regex,string,function,split,Javascript,Regex,String,Function,Split,我应该用空格(或\r\n\t)分割可能包含子字符串的字符串 例如: text 'contained in' a string 我试过使用正则表达式,如: /[?<!\"\'](\ )*[?!\"\']/g; 但这是错误的。。。为了解决这个问题,我花了很多时间:@ 现在,我制作了一个split函数,如果子字符串过多,它会自动被sepchar分割,但我正在寻找一个简单的正则表达式解决方案,如果可能的话,很明显:p看起来您正试图使用如下的lookarounds: /(?<!\"\')

我应该用空格(或\r\n\t)分割可能包含子字符串的字符串

例如:

text 'contained in' a string
我试过使用正则表达式,如:

/[?<!\"\'](\ )*[?!\"\']/g;

但这是错误的。。。为了解决这个问题,我花了很多时间:@

现在,我制作了一个split函数,如果子字符串过多,它会自动被sepchar分割,但我正在寻找一个简单的正则表达式解决方案,如果可能的话,很明显:p

看起来您正试图使用如下的lookarounds:

/(?<!\"\')(\ )*(?!\"\')/
现在唯一的问题是如何处理那些
未定义的
和空字符串?您可以使用ES5中的方法,如下所示:

var input = "text 'contained in' a string";
var output = input.split(/('[^']*')|\s/).filter(function(s) { return s && s.length; });
console.log(output); // ["text", "'contained in'", "a", "string"]
看起来您正试图使用如下环视:

/(?<!\"\')(\ )*(?!\"\')/
现在唯一的问题是如何处理那些
未定义的
和空字符串?您可以使用ES5中的方法,如下所示:

var input = "text 'contained in' a string";
var output = input.split(/('[^']*')|\s/).filter(function(s) { return s && s.length; });
console.log(output); // ["text", "'contained in'", "a", "string"]
您可以这样做:

(?:'(.*)'|(\b[\w]+\b))
工作正则表达式示例:

或者更好,而不是使用单词bounderies(因为您的字符串可能包含特殊字符)。。这样会更好:

(?:'(.*?)'|(?:[\s]*|^)([^\s]+)(?:[\s]*|$))
示例字符串:

text 'contained in' a string-with special's chars.
匹配项:

"text", "contained in", "a", "string-with", "special's", "chars."
工作正则表达式示例:

您可以这样做:

(?:'(.*)'|(\b[\w]+\b))
工作正则表达式示例:

或者更好,而不是使用单词bounderies(因为您的字符串可能包含特殊字符)。。这样会更好:

(?:'(.*?)'|(?:[\s]*|^)([^\s]+)(?:[\s]*|$))
示例字符串:

text 'contained in' a string-with special's chars.
匹配项:

"text", "contained in", "a", "string-with", "special's", "chars."
工作正则表达式示例:


您可以在Javascript中使用:

var s="text 'contained in' a string";
s.split(/ +(?=(?:(?:[^']*'){2})*[^']*$)/g);
//=> ["text", "'contained in'", "a", "string"]

Regex基本上使用了一个向前看来确保空格后面有偶数个引号。

您可以在Javascript中使用它:

var s="text 'contained in' a string";
s.split(/ +(?=(?:(?:[^']*'){2})*[^']*$)/g);
//=> ["text", "'contained in'", "a", "string"]
Regex基本上使用了一个向前看的方法来确保空格后面有偶数个引号。

试试
/([\'\'\'][^\'\']+[\'\'\'])|([^\s]+)/g
,虽然简单,但效果很好

您只能使用
/([\'\'\'][^\''\']+[\'\'\']]/g
尝试
/([\'\'\'][^\'\']+[\'\'\']])([^\s]+/g
,简单但效果良好


您只能使用
/([\'\“][^\'\']+[\'\'\']]/g

在上述示例中,您希望获得什么样的结果?此->[“文本”,“包含在””,“a”,“字符串”]子字符串中包含的空格不可拆分。字符串的倒逗号中是否包含
text“字符串”
?否则肯定会很复杂。当然,在这种情况下,使用转义字符就足够了,比如\在上面提到的示例中,您希望得到什么样的结果?this->[“text”,“contained in'”,“a”,“string”]子字符串中包含的空格不可拆分。字符串的倒逗号中是否包含
text“字符串”
?当然,在这种情况下,使用转义字符就足够了,例如\thank you,通过这个小的修改,我现在可以用“或”(:[“|”)(.*?:[\s]*|^)(?:[\s]*|^)([^\s]+(?:[\s]*|$)来解压。谢谢你,通过这个小的修改,我现在可以用“或”(((?[“|]*|])(?:*|])(?:*|]+)(?:(?)[\s]*|$))