我在JS中使用regexp匹配字符串时遇到了问题。 我可以用这个:
/"[^"]*?"/g
在这个字符串中:
" this is a string "
但我不能在此使用它:
" this is a \"string\" "
我该如何解决这个问题? 感谢。
答案 0 :(得分:3)
如果我理解正确,你想要做的是测试字符串的格式是否正确?所以没有过早的字符串结尾?
如果是这种情况,您可以使用 private static OleDbConnection conn()
{
string conn;
conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Sheikh Tariq\Documents\Visual Studio 2010\Projects\Car\Car.accdb";
return new OleDbConnection(conn);
}
//This is to INSERT data in Car table
public static void Add(string Manu, string Model, string Register, int Doors, string Colorr, int Upg, int Pri)
{
OleDbConnection myadd = conn();
string query = "INSERT INTO Car( Manufacturer, Model, RegistrationNumber, NumberOfDoors, Color, PossibleUpgrades, Price ) VALUES('" + Manu + "' , '" + Model + "' , '" + Register + "' , '" + Doors + "' , '" + Colorr + "', '" + Upg + "', '" + Pri + "')";
OleDbCommand command = new OleDbCommand(query, myadd);
try
{
myadd.Open();
command.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine("ERROR", ex);
}
finally
{
myadd.Close();
}
}
答案 1 :(得分:1)
[^\\]?(".*?[^\\]")
你可以试试这样的事情。你需要抓住小组或捕捉并不匹配。参见演示。
https://regex101.com/r/nS2lT4/30
或
(?:[^\\]|^)(".*?[^\\]")
参见演示。
答案 2 :(得分:0)
在这种情况下你不应该使用[^"]*
你也不需要非贪心你可以使用以下正则表达式来匹配2引号之间的所有内容:
/"(.*)"/g
如果你想匹配"
之间的任何东西,你可以在一个带有全局修饰符的字符类中使用带有空格匹配器的单词字符匹配器:
/[\w\s]+/g
另一种方法是使用negative look-behind:
/(?<!\\)"(.*?)(?<!\\)"/