我正在尝试去除所有不是字母或数字的字符的字符串。我尝试使用正则表达式来extends layout
block content
h1= title
body
script(src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js')
link(rel='stylesheet', href='/stylesheets/style.css')
link(rel='stylesheet',href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css')
script(src='//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js')
nav
.navbar.navbar-inverse
.container-fluid
.navbar-header
a
.navbar-brand(href='#') WebSiteName
ul.nav.navbar-nav
li.active
a(href='#') Home
li
a(href='#') Issues
li
a(href='#') Page 2
li
a(href='#') Page 3
,但是它没有删除预期的字符:
String.prototype.replace
答案 0 :(得分:2)
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
//
// This method is invoked when the application has loaded and is ready to run. In this
// method you should instantiate the window, load the UI into it and then make the window
// visible.
//
// You have 17 seconds to return from this method, or iOS will terminate your application.
//
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
Google.MobileAds.MobileAds.Configure("ca-app-pub-XXXXXXXXXXXXXXXXXX~XXXXXXXX");
Xamarin.Forms.Forms.Init();
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}
}
字符组已更改为排除组。 this.colorPreset1=this.colorPreset1.replace(/[^0-9a-zA-Z]/g, '');
将匹配列表中未包含的任何字符。如您所愿,它只会与您要保留的字符匹配。
字符串的锚点已删除-您要替换所有非字母数字字符,因此它们位于何处都没有关系。
添加了全局标记[^]
,因此它将替换所有匹配项,而不仅仅是第一个匹配项。
答案 1 :(得分:2)
通过在正则表达式周围添加^
和$
,您可以明确地告诉它匹配以此模式开头和结尾的字符串。
因此,只有在字符串的所有内容均与该模式匹配时,它才会替换搜索到的模式。
如果要匹配每次出现的非数字或字母字符,则必须删除^
起始约束和$
结束约束,而且还必须更改模式本身:
[A-Za-z0-9]
匹配字母或数字字符,您需要与此相反(要反转字符类,请在字符类的开头添加一个^
:
[^A-Za-z0-9]
最后在正则表达式中添加g
选项,以使其与每个匹配项匹配(否则将仅替换第一个匹配项):
/[^A-Za-z0-9]+/g
答案 2 :(得分:0)
JavaScript RegEx replace将仅替换第一个找到的值。如果您在模式中指定g
参数,则表示全局或“全部替换”。
this.colorPreset1=this.colorPreset1.replace(/[^0-9a-zA-Z]/g, '');
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp