在javascript中使用小于空格和字符替换小于和字符

时间:2011-03-03 20:54:57

标签: javascript

在我的文本框中,我应找到(<LessThan Symobl> <character>)并替换为(<LessThan Symbol <space> <character>

示例:

输入:

abc<xyz abc <abc

输出:

abc< xyz abc < abc

从字符串中,我应该找到( [LessThanSymbol] [character] )并替换为( [LessThanSymbol] [space] [Character]

5 个答案:

答案 0 :(得分:5)

您可以使用正则表达式查找后跟非空格字符的所有<字符,并插入空格:

s = s.replace(/<([^ ])/g, '< $1');

答案 1 :(得分:2)

s = s.replace(/<(?=\S|$)/g, "< ");

这意味着什么:

  • 您可以猜出.replace()做了什么以及<代表什么。 : - )
  • (?=...)是“积极向前看” - 意思是“后跟”。
  • \S匹配任何 - 空白字符(空格,非中断空格,制表符,回车符和换行符以外的任何内容)。
  • $匹配字符串的结尾。
  • /.../g执行全局搜索/替换。

使用前瞻可以防止您必须使用捕获组($1),使用\S修复换行问题,使用$可以防止出现类似问题如果字符串以小于。

结尾
>>> "<foo < bar <\tbaz <\rquux <\nquuux <".replace(/<(?=\S|$)/g, "< ")
"< foo < bar <\tbaz <\rquux <\nquuux <"

答案 2 :(得分:1)

我发现的最好的是:

s = s.replace(/<(?!\s)(?!$)/g,'< ');

这意味着:

  • (?!\ s) - 后面没有空格(Negative Lookahead)
  • (?!$) - 后面没有字符串的结尾(Negative Lookahead)

您还可以使用split()然后使用join():

'abc<xyz abc <abc'.split('<').join('< ')

但是这个方法存在一个问题:用非必要空间完成的跟踪字符。

'abc<xyz abc <abc<'.split('<').join('< ')

给出了这个结果

'abc< xyz abc < abc< '

答案 3 :(得分:0)

尝试类似......

var string_variable;
string_variable = "Replace text using javascript replace function within a javascript string variable";
string_variable = string_variable.replace(/javascript/g, "js");
alert(string_variable);

(见:http://www.kodyaz.com/articles/replace-all-occurrences-of-string-using-javascript-replace-function.aspx

答案 4 :(得分:0)

我找到了答案。

s= s.replace(/<([^ \n])/g, '< $1');

它为lessthan之后的所有出现后插入空间,然后是(非空间和非新行)