-/*"; var firstSpecialCharIndex = inputStr-6ren">
gpt4 book ai didi

javascript - JS 正则表达式在特殊字符之前匹配空格

转载 作者:行者123 更新时间:2023-11-27 22:53:32 26 4
gpt4 key购买 nike

我正在尝试从字符串中提取一系列以特殊字符开头的单词。我的代码是:

var specialChars = "!#^@>-/*";
var firstSpecialCharIndex = inputString.search(/[\\!\\#\\^\\@\\>\\\-\\/\\*]/);
var plainText = inputString.substring(0, firstSpecialCharIndex);
var result = {};
result["text"] = plainText;

for (i = firstSpecialCharIndex + 1; i < inputString.length;) {
var modifiedString = inputString.substring(i);

var currentChar = inputString.charAt(i - 1);
if (result[currentChar] == null)
result[currentChar] = [];
var text = "";
var specialCharIndex = modifiedString.search(/[\\!\\#\\^\\@\\>\\\-\\/\\*]/);
if (specialCharIndex != -1) {
text = modifiedString.substring(0, specialCharIndex);
text = text.trim();
result[currentChar].push(text);
i += specialCharIndex + 1;
} else {
text = modifiedString.substring(0);
text = text.trim();
result[currentChar].push(text);
i = inputString.length;
}
}

现在这种方法可以工作了,并且可以正确地转换字符串:

String start ^a #b #c @d >e *f /g

进入:

{"text":"String start ","^":["a"],"#":["b","c"],"@":["d"],">":["e"],"*":["f"],"/":["g"]}

问题在于使用原始字符串中的字符。目前,正则表达式认为 string@string 应该与 @string 匹配,但实际上它不应该匹配。 我只想在特殊字符之前有空格时进行匹配。

在使用正则表达式之前是否可以需要一个空格?是否有其他方法可以清理正则表达式,或者它的目的是否正确?或者我需要编写更多 JS 来检查这些值然后清理它们什么的?

非常感谢

最佳答案

您可以使用正则表达式:

/ ([!#^@>\/*-]\w+)/gm

使用此代码:

var result = {};


var re = / ([!#^@>\/*-]\w+)/gm;
var str = 'lorem ipsum http://google.com -h ';
var m;

var firstSpecialCharIndex = str.search(/ [!#^@>\/*-]/);
result["text"] = str.substring(0, firstSpecialCharIndex);


while ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}

var index = m[1].substring(0,1);
if(result[index] == null)
result[index] = [];
result[index].push(m[1].substring(1));
}


console.log(result);

关于javascript - JS 正则表达式在特殊字符之前匹配空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37837344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com