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