如何通过javascript或jquery从句子中提取括号外和括号内的文本



我有一个句子存储在一个变量中。我需要把这句话提取成3个部分,我在代码中的其他3个变量中提到过,现在我已经在变量中进行了硬编码。然后,我需要分别控制台这些变量。我已经尝试过第一次使用slice,有没有更好的方法可以做到这一点。下面是代码。有人能帮我吗?

HTML

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

脚本

$(document).ready(function(){
var maintext = "Welcome to project,are you (1. Existing user or 2. new user)"  ;
var text_split1 = maintext.split(' ').slice(0,4).join(' ');
//var text_split1 =  "Welcome to project,are you" ; /*this text should come from maintext after extraction*/
var text_split2 = "1. Existing user" ; /*this text should come from maintext after extraction*/
var text_split3 = "2. new user" ; /*this text should come from maintext after extraction*/
console.log(text_split1);
console.log(text_split2);
console.log(text_split3);
});

在这种情况下,最好的选择是创建一个正则表达式。

在你的情况下(如果我说得对的话(,你有一句话,包括:

  1. 一些文本
  2. 打开括号"(">
  3. 更多文本
  4. 单词"or">
  5. 更多文本
  6. 右括号"(">

因此,您希望正则表达式与上面的格式匹配,并希望捕获项1、3和5。

在这里,我为您制作了正则表达式:/^(.*) ?((.*) or (.*))$/

现在,使用函数exec(string),您可以匹配所需的字符串并从中捕获所需的部分

regex = /^(.*) ?((.*) or (.*))$/;
maintext = "Welcome to project,are you (1. Existing user or 2. new user)";
matches = regex.exec(maintext);
text_split1 = matches[1];
text_split2 = matches[2];
text_split3 = matches[3];

请注意,我没有使用matches[0]。这是因为这是正则表达式的完全匹配,在本例中,它将是您最初拥有的完整字符串。

此外,请注意,正则表达式可能会失败,因为括号内的任何文本都包含完整的单词"或",用于分隔字符串的两个部分。你必须确保这不会发生,或者可能使用一些特殊字符来分隔两个文本而不是单词。

我建议您看看Split、Substring和IndexOf方法。

例如,如果你想抓住括号里的内容,你可以做

var inside_split = maintext.substring(maintext.indexOf( "(" ) + 1, maintext.indexOf( ")" ) )

然后是之外的东西

var outside_split = maintext.substring(0, maintext.indexOf("(") - 1)

或带有拆分

var split_Text = maintext.split("(") 

小心这里的拆分,因为它会导致最后一个括号包含在.中

Array [ "Welcome to project,are you ", "1. Existing user or 2. new user)" ]

然后你可以用拆分这两个选项

split_Text[1].split("or")

导致

Array [ "1. Existing user ", " 2. new user)" ]

然后操作剩余的右括号

最新更新