Javascript 在冒号上拆分所有表单输入并在span中换行

Javascript 在冒号上拆分所有表单输入并在span中换行,javascript,jquery,html,css,regex,Javascript,Jquery,Html,Css,Regex,我正在为如何最好地做到这一点而挣扎,希望得到一些建议 对于此表单中的所有输入,我需要在冒号处拆分标签:并在标签的后半部分环绕一个跨度,以实现如下效果:常规:135美元1年或225美元2年 正则表达式是实现这一点的最佳途径吗?我不知道该怎么做,这比我对正则表达式的了解要复杂一点 <div class="form-item webform-component webform-component-radios" id="webform-component-discount-options">

我正在为如何最好地做到这一点而挣扎,希望得到一些建议

对于此表单中的所有输入,我需要在冒号处拆分标签:并在标签的后半部分环绕一个跨度,以实现如下效果:常规:135美元1年或225美元2年

正则表达式是实现这一点的最佳途径吗?我不知道该怎么做,这比我对正则表达式的了解要复杂一点

<div class="form-item webform-component webform-component-radios" id="webform-component-discount-options">

<div id="edit-submitted-discount-options" class="form-radios">

<div class="form-item form-type-radio form-item-submitted-discount-options">
   <input type="radio" id="edit-submitted-discount-options-1" name="submitted[discount_options]" value="none" class="form-radio">
      <label class="option" for="edit-submitted-discount-options-1">Regular: $135 (1 Year) or $225 (2 Year) </label>
</div>

<div class="form-item form-type-radio form-item-submitted-discount-options">
 <input type="radio" id="edit-submitted-discount-options-2" name="submitted[discount_options]" value="senior" class="form-radio">
      <label class="option" for="edit-submitted-discount-options-2">Senior: $108 (1 Year) or $180 (2 Year) </label>

</div>
<div class="form-item form-type-radio form-item-submitted-discount-options">
   <input type="radio" id="edit-submitted-discount-options-3" name="submitted[discount_options]" value="student" class="form-radio">
      <label class="option" for="edit-submitted-discount-options-3">Student: $81 (1 Year) </label>
</div>

<div class="form-item form-type-radio form-item-submitted-discount-options">
   <input type="radio" id="edit-submitted-discount-options-4" name="submitted[discount_options]" value="nonresident" class="form-radio">
      <label class="option" for="edit-submitted-discount-options-4">Non-Resident: $108 (1 Year) or $180 (2 Year) </label>
</div>

</div>
</div>
用正则表达式解析HTML通常是个坏主意。 HTML不是一种正则语言,因此正则表达式没有足够的能力来处理它。真的

也就是说,如果您知道您的标记只在一行上,并且所有标记的格式都正确,并且您真的决定使用正则表达式,那么这将实现以下技巧:

*?:*

它获取一个开始标签标签,读取冒号的第一个实例,然后捕获之后的所有内容,直到找到标签的结束标签


这只适用于您发布的示例。如果标签后面有另一个属性,或者由于某种原因您有嵌套的标签标签,或者标签中的任何其他位置出现冒号,则正则表达式将中断。如果您已经使用JS,那么最好使用element.innerText获取文本,然后以这种方式进行更改。

我想您只是想知道如何将其作为编辑任务自动化,而这似乎是在代码编辑器中手动重复执行的任务

尽管对4个输入手动执行此操作非常简单,但实际上也可以使用正则表达式来完成


类似于/?的正则表达式此方法通过确保编辑内容时不存在子项而不影响DOM

$label.option.eachfunctionx{ 如果$this.children.length==0{ var t=$this.text; var r=t.replace/*?:\s**?\s*$/,“$1$2”; $this.htmlr; 控制台日志 } }; 普通:135美元1年或225美元2年 高级:108美元1年或180美元2年 学生:$81 1年 非居民:108美元1年或180美元2年
这个问题有几个问题:首先,它可能是一个[XY问题]√. 为什么您需要这样做,并使用JavaScript这样做?其次,你需要展示你的研究成果,以及你自己解决问题的尝试。事实上,您还没有表现出任何努力……是的,正则表达式将是实现这一点的简单方法。使用捕获组获取冒号后的所有内容,然后将其放在替换的范围内。请尝试转到regular-expressions.info并阅读有关捕获组的教程部分。