Javascript 正则表达式提取传递到字符串'#substr(,)和#x27;

Javascript 正则表达式提取传递到字符串'#substr(,)和#x27;,javascript,regex,Javascript,Regex,我们有一个文本输入,用户可以输入一些文本,并在文本上应用一些函数,如(substr,replace)等。例如,用户可以在文本输入中输入文本“hello”,并可以应用子字符串函数(#substr(hello,'startIndex','length'))并可以提及起始索引和长度等 需要使用正则表达式提取传递到#substr函数的值,以验证必填字段。例如,当用户选择substr函数时,需要“开始索引”和“长度” function doSubstringStuff(textValue, subStri

我们有一个文本输入,用户可以输入一些文本,并在文本上应用一些函数,如(substr,replace)等。例如,用户可以在文本输入中输入文本“hello”,并可以应用子字符串函数(#substr(hello,'startIndex','length'))并可以提及起始索引和长度等

需要使用正则表达式提取传递到#substr函数的值,以验证必填字段。例如,当用户选择substr函数时,需要“开始索引”和“长度”

function doSubstringStuff(textValue, subString_mode) {
  if subString_mode == "length" {  
  return textValue.length;  
}
下面是不同的场景及其预期输出

#substr(hello,1,3)--->['hello','1','3']

#substr($(sometext),1,3)--->['$(sometext)','1','3']

#substr(#trim(hello),1,3)--->[#trim(hello),'1','3']

#substr(#replace(hello world,hello,hi),1,3)--->['#replace(hello world,hello,hi)','1','3']

正如上面的例子所示,我们需要提取作为数组元素传递到#substr函数中的参数

我试过这个正则表达式

/#substr\((.*?),(.*?),(.*?)\)/g

如果我们有这样的嵌套函数-#substr(#replace(hello world,hello,hi),1,3)

如果您试图获取用户输入或索引的长度,您可以将所有所需的方法放在一个函数或多个函数中,这些函数在单击按钮时调用

我可能有误解,但如果我举一个你的例子:

#substr(hello,1,3)--->['hello','1','3']

当我跑的时候

str = "hello world"
str.substring(1,3) --> I get "el" (not "hello", "1", "3")
  • 获取一些文本:

    var firstName = document.getElementById("firstName").value;  
    var age = document.getElementById("age").value;  
    
  • 单击按钮调用函数

    function doSubstringStuff(textValue, subString_mode) {
      if subString_mode == "length" {  
      return textValue.length;  
    }
    

  • 验证长度是否符合您的条件

    if (textValue.length > 10) {
      alert("The name must have no more than 10 characters");
    
    或执行由参数“mode”确定的其他任务

    else如果子字符串\u mode==“integer\u test”{
    如果(isNaN(textValue)|年龄<12 | |年龄>100){alert(“年龄必须在数字12和100之间”);
    
    如果字符串占用整行,此正则表达式可以解决您的问题,但是如果在第二个参数中输入逗号命令,它将失败,这是一个非常复杂的问题,需要使用简单的正则表达式来解决。我想您正在敲开编译器的大门

    regex=/^ substr\(.*),(.*),(.*))$/;
    text=“#substr(#replace(hello world,hello,hi),1,3)”;
    
    console.log(regex.exec(text));
    您可以将下面的正则表达式用于捕获组

    (\S+?)\(.*)、(\d+)、(\d+)\)

    对于嵌套匹配,这不是不可能的,但在正则表达式中非常复杂。简单的方法应该是避免使用正则表达式并使用js代码进行嵌套匹配